关于多线程lock-free代码

首先要理解JVM内存模型,可以参考我之前的文章。

然后C++里面其实有一样的指令排序的问题。虽然C++11里面针对happens-before规则做了一些语义上面的支持。但是普通C/C++没有做这些支持。

需要了解我们平时工作所在的x86对于指令排序是可能 store-load重排序的。

而一般最常定义的lock-free,指的可能是基于CAS(Compare and Swap)这样的技术。

比如乐观锁这样的。

而不是说的完全没有锁。指的是始终有线程能够往下走。

而尽量减少加锁的代价就是最好的。

原文地址:https://www.cnblogs.com/charlesblc/p/6434497.html