您的位置:首页 > 编程语言 > C#

C#使用lock锁定静态变量

2015-08-12 19:44 459 查看
http://bbs.csdn.net/topics/391055599

(一)

如果简写,那么可以写:

C# code?
如果要提高一点微不足道的“性能”,可以写

C# code?
但是这种改进确实应该是“微不足道”的,它对一个应用程序(即使是非常频繁地并发访问)的用户体验基本上感觉不出来一丝一毫。

这就引出了回答上面的你在#2楼的这个问题。实际上,就算不lock,就算是你的asp.net应用恰好“同时”被两个消息处理线程执行到

C# code?
而产生了所谓的“不安全”的幻象结果,那有多大事儿?只不过是可能确实是偶尔多调用了 DAL.GetData()了,这会有多大事儿呢?

我并不是说应该或者不应该lock。而是这里的代码本身是可以容许有瑕疵的,有瑕疵也没什么大不了的。除非你确实将一个由于 Store.dt=DAL.GetData(); 语句被执行了不止一次而产生的bug摆在面前。

注意,我再次强调,我此刻不是在讨论是非问题。而是“用什么方法来保证质量”。我们用“bug的存在性”来评判质量,而不是用编程的洁癖规则来评判。

(二)

webform和winform的编程思路完全不同的

winform就是一个人在用,在自己的电脑内存里,不会有别的用户的数据

而webform是个网站,它天生是多线程,是服务端和客户端的通信程序

在webform里,static类型是所有线程公用的,那么就会出现所有用户的数据互相错乱的现象

所以除非是所有用户公用的数据(比如数据库连接字符串),否则不要放到static类型的变量里去
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: