首页 > > > 有关.net 并发访问
动态和静态方法的区别:
动态方法:使用时在内存中实例化该方法,用完释放掉。因为有实例化和释放的过程,所以耗CPU资源
静态方法:创建完内存至一直存在,直接调用即可。因为内存中独占一部分内存,所以耗内存资源。
常用的方法静态比较好。
(问1,我这个理解对吗?)
IIS多线程执行会引发并发访问共享数据(数据库,静态字段,静态方法),导致出现脏读等现象。
(问2,我这个理解对吗?)
为此我们用锁机制来解决该问题,
如:数据库的事务ACID属性,还有.net 里可以用static object ob = new object(); lock (ob)方法加锁。
(问3,我这个理解对吗?)
--------------------------------------
如果两个用户同时读写同一个静态方法,很可能脏读现象,因为静态方法是在内存中唯一的。
(问4,我这个理解对吗?)。
如果两个用户同时读写同一个动态方法,不可能出现脏读现象,因为调用动态方法时在内存中实例化(拷贝一份)独立的方法。
(问5,我这个理解对吗?)
如用“static object ob = new object(); lock (ob){}”方式加锁,修饰符必须是静态。
如果用“static object ob = new object(); lock (ob){}”方式加锁动态/静态方法(SqlHelper),在数据库中可以不用事务锁(ACID)。
(问6,我这理解对吗?)
注:我语文不太好,语法方面可能有错误。如果有不明白的地方请提出来。谢谢!
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3711/viewspace-3125304/ ,如需转载,请注明出处,否则将追究法律责任。