这篇文章收集整理了lock free的编程概念。
如果在一个共享的数据结构上的操作都不需要互斥,那么它是无锁的。如果一个进程在操作中间被中断,其它进程不受影响。
lock free(翻译成 无锁或者锁无关)的优势
- 通过减少阻塞和等待,来改进并发性和可扩展性。
- 消除条件竞争(race condition)、死锁、可组合性不足带来的潜在问题。
- 避免优先级反转
但是无锁编程不是万能药,因为无锁算法实现起来更复杂,它也有潜在问题,比如竞争(contention),这会极大地影响性能。从这一点出发,Herb引出了他的第一条强烈建议:
- 在使用无锁技术前,你必须先测试你的程序,确定它有性能或可扩展性问题。
- 实现无锁算法后,再次测试你的程序,确定结果得到了有效的改进。
