C# volatile 与 lock
来源:互联网 发布:魔镜软件下载 编辑:程序博客网 时间:2024/06/08 04:47
volatile的使用场景:多个线程同时访问一个变量,CLR为了效率,允许每个线程进行本地缓存,这就导致了变量的不一致性。volatile就是为了解决这个问题,volatile修饰的变量,不允许线程进行本地缓存,每个线程的读写都是直接操作在共享内存上,这就保证了变量始终具有一致性。缺点很明显:牺牲了效率。
lock的使用场景:多个线程同时访问一个代码块,使用lock修饰该代码块,强制多个线程进行排队,一个接一个的去访问。缺点很明显:排队进行必然导致效率低。
系统中应该尽量减少lock的使用(也就是排队执行的情况),因为根据阿姆达尔定律:S=1/(a+(1-a)/n),其中S为加速比,a为串行计算部分,n为并行计算节点,该公式意味着:如果具备足够的并行计算节点,要想增加系统的速度,必须减少串行部分。因为串行意味着,一个人做的时候,其他人必须等着。Google的MapReduce,也就是把串行计算转化为并行计算。
http://www.cnblogs.com/nzbbody/archive/2011/12/29/2305895.html
0 0
- C# volatile 与 lock
- C# volatile 与 lock
- C# volatile与lock
- C# volatile ,lock解析
- C# volatile ,lock解析
- (C# 参考)volatile,lock
- volatile(C# 参考)和Lock
- c# lock (obj) 与 lock (this) 区别
- c# lock (obj) 与 lock (this) 区别
- c# lock (obj) 与 lock (this) 区别
- c# lock (obj) 与 lock (this) 区别
- volatile,lock,synchronized
- synchronized / Lock+Volatile
- volatile 和 lock
- C#字符串留用机制与Lock.
- C#中的readonly 与 const 和 volatile
- C# lock
- C# Lock
- PowerDesiger中导入.sql文件
- POJ 2954 Triangle(pick定理,边上整点数)
- Matlab计算机视觉/图像处理工具箱推荐
- hive与hbase的十大区别与联系
- Eclipse使用网上工程出现错误“The import android cannot be resolved”错误解决方法
- C# volatile 与 lock
- 邻舍网的微信扫描登录功能是怎么弄出来的
- 苹果能够创造智能手表的需求吗?
- java使用Rome解析Rss的实例
- ubuntu 下安装vsftp win7中用fileZilla 访问
- Android UI--自定义ListView(实现下拉刷新+加载更多)
- 优游平台总代,优游平台总代【总代Q941494533】是
- 笨园柿重展匦忍拭闭拦匮赏饰悄愿
- 南宁隆鼻哪家医院好 广西武警公立整形