lock-free 编程介绍

这篇文章收集整理了lock free的编程概念。
如果在一个共享的数据结构上的操作都不需要互斥,那么它是无锁的。如果一个进程在操作中间被中断,其它进程不受影响。

lock free(翻译成 无锁或者锁无关)的优势

  • 通过减少阻塞和等待,来改进并发性和可扩展性。
  • 消除条件竞争(race condition)、死锁、可组合性不足带来的潜在问题。
  • 避免优先级反转

但是无锁编程不是万能药,因为无锁算法实现起来更复杂,它也有潜在问题,比如竞争(contention),这会极大地影响性能。从这一点出发,Herb引出了他的第一条强烈建议:

  • 在使用无锁技术前,你必须先测试你的程序,确定它有性能或可扩展性问题。
  • 实现无锁算法后,再次测试你的程序,确定结果得到了有效的改进。

阅读全文