关于多线程lock-free代码

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

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

 

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

 

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

比如乐观锁这样的。

 

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

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

 

posted @ 2017-02-23 17:23  blcblc  阅读(394)  评论(0编辑  收藏  举报