C# volatile 与 lock
来源:互联网 发布:网络攻击防范措施 编辑:程序博客网 时间:2024/05/20 20:17
C# volatile 与 lock
volatile的使用场景:多个线程同时访问一个变量,CLR为了效率,允许每个线程进行本地缓存,这就导致了变量的不一致性。volatile就是为了解决这个问题,volatile修饰的变量,不允许线程进行本地缓存,每个线程的读写都是直接操作在共享内存上,这就保证了变量始终具有一致性。缺点很明显:牺牲了效率。
lock的使用场景:多个线程同时访问一个代码块,使用lock 修饰该代码块,强制多个线程进行排队,一个接一个的去访问。缺点很明显:排队进行必然导致效率低。
系统中应该尽量减少lock的使用(也就是排队执行的情况),因为根据阿姆达尔定律:S=1/(a+(1-a)/n) ,其中S 为加速比,a 为串行计算部分,n为并行计算节点,该公式意味着:如果具备足够的并行计算节点,要想增加系统的速度,必须减少串行部分。因为串行意味着,一个人做的时候,其他人必须等着。Google 的MapReduce,也就是把串行计算转化为并行计算。
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
- 消除SDK更新时的“https://dl-ssl.google.com refused”异常
- 装饰模式(Decorator)与代理模式(Proxy)的区别与联系
- 探索ORACLE之ASM概念
- Take a look at this
- JFreeChart饼状图、3D柱状图、折线图
- C# volatile 与 lock
- MySql注入科普
- meminfo vmstat procrank top等详解
- AVR配合ENC28J60芯片移植uIP实现web客户端
- 国资委反馈6家央企问题 亏损中盐年招待费8千万
- C++回调函数,CALLBACK
- ios之手势
- 设计模式——单例模式
- Public Yum Server