1)lock-free 算法
Lock-free 算法一般比基于锁的算法要好: 缓存
可是 lock-freedom 并非万能药。下面是一些很明显的不利因素: 数据结构
2) CAS: 架构
CAS的原理是,将旧值与一个指望值进行比较,若是相等,则更新旧值
并发
CAS 的原子性彻底取决于硬件实现。大多数 Intel 和 AMD 的 CPU 采用了一种叫作 MOSEI 缓存一致性协议来管理缓存。这种架构下,处理器缓存内 CAS 操做相对成本低廉。但一旦资源争用,就会引发缓存失效和总线占用。缓存越失效,总线越被占用,完成 CAS 操做也越被延迟。缓存争用是程序可伸缩性杀手。固然对于非 CAS 内存操做来讲也是如此,但 CAS 状况更加槽糕。 dom
3)fetchandadd 性能
原子队列等则被证实不足以良好的同步两个以上的线程 测试
4) pthread_lock: fetch
当多个控制线程共享相同的内存时,须要确保每个线程看到一致数据视图。若是不存在读取数据或者全部数据只读时不会存在一致性问题。若是某个线程正在修改变量而其余线程也能够读取或者修改这个变量的时候就须要对这些线程进行同步。在变量修改多于一个存储器访问周期时可能出现不一致的错误 优化