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类型的变量里去
(一)
如果简写,那么可以写:
C# code?
C# code?
这就引出了回答上面的你在#2楼的这个问题。实际上,就算不lock,就算是你的asp.net应用恰好“同时”被两个消息处理线程执行到
C# code?
我并不是说应该或者不应该lock。而是这里的代码本身是可以容许有瑕疵的,有瑕疵也没什么大不了的。除非你确实将一个由于 Store.dt=DAL.GetData(); 语句被执行了不止一次而产生的bug摆在面前。
注意,我再次强调,我此刻不是在讨论是非问题。而是“用什么方法来保证质量”。我们用“bug的存在性”来评判质量,而不是用编程的洁癖规则来评判。
(二)
webform和winform的编程思路完全不同的
winform就是一个人在用,在自己的电脑内存里,不会有别的用户的数据
而webform是个网站,它天生是多线程,是服务端和客户端的通信程序
在webform里,static类型是所有线程公用的,那么就会出现所有用户的数据互相错乱的现象
所以除非是所有用户公用的数据(比如数据库连接字符串),否则不要放到static类型的变量里去
相关文章推荐
- C#利用POST实现杭电oj的AC自动机器人,AC率高达50%~~
- c# 根据文件流查看文件真实格式
- C# 在 vs2010 上开发 ActiveX 控件 【千辛万苦啊~】
- 编写高质量代码改善C#程序的157个建议——建议9: 习惯重载运算符
- C#停车位管理系统
- 编写高质量代码改善C#程序的157个建议——建议8: 避免给枚举类型的元素提供显式的值
- C#薪酬管理子系统
- c# MVC例子学习必看 一个简单的.NET MVC 实例
- C#如何使用和开发自定义配置节
- 编写高质量代码改善C#程序的157个建议——建议7: 将0值作为枚举的默认值
- C#遍历文件夹下所有文件通过MD5函数计算文件的MD5
- 编写高质量代码改善C#程序的157个建议——建议6: 区别readonly和const的使用方法
- 【C#】 get和set
- C#深复制与浅复制
- 编写高质量代码改善C#程序的157个建议——建议5: 使用int?来确保值类型也可以为null
- 如何逐行读取文本文件 - .NET技术 / C#
- 编写高质量代码改善C#程序的157个建议——建议4: TryParse比Parse好
- C#:实现托盘(任务栏图标与托盘图标互斥)
- C#中.tostring(X2)的用法
- .NET平台和C#编程基础知识复习