码迷,mamicode.com
首页 > 其他好文 > 详细

原子操作与锁

时间:2014-05-27 02:24:26      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:使用         时间      线程   

1. 既然比较两者性能, 必然锁的区域极小, 可以使用原子操作代替

2. 若这个极小区域就是操作的全部, 只是频繁被调用, 则看并发的线程数量, 在并发量小时,  线程冲突小, 而一个 yield 可以保证较长时间内其他线程不来打搅, 获得的是一个类似批处理的结果, 性能较原子操作高; 自然, 若仅仅只有一个线程, 大家都是批处理, 还是原子操作性能高些; 随着线程数增加, 线程冲突频繁, 此时基本上无视线程多少的原子操作开始超越 yield 锁; 若是 futex 锁, 似乎比 yield 锁可以取得更高性能;但  futex 太重, 估计要超过 yield 锁需要的线程数是个不太现实的数字;

3, 若这个极小区域是一个较长调用的一部分, 则锁区域比重降低, 意味着同时访问临界区的概率降低, 此时锁自身的成本成为性能主要影响因素, 原子操作性能会超过yield锁,  但由于锁区域比重低, 因此整体性能并不会表现出很大差异

 

唯一貌似原子操作比 yield 锁性能大很多的就是 情况 2 的极大并发下 及 锁区域很大下, 但很大的锁区域恐怕原子操作不能够做等价实现, 因此没有意义

结论就是整体而言, 原子操作性能要高些, 但有限

原子操作与锁,布布扣,bubuko.com

原子操作与锁

标签:使用         时间      线程   

原文地址:http://www.cnblogs.com/zylthinking/p/3736032.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!