为了提高并发访问的性能,很多人提出了lock free算法。它的原理是避免了由于锁导致线程进入等待状态造成的开销,而且避免了锁导致的死锁,signal等问题。但是很多人指出lock free 算法在高度竞争的情况下效果不好。我没有测试过,目前现成的库有libcds。
lock free使用cas, faa等原子指令实现,有时也使用cas2指令,主要是为了解决aba问题。(aba问题的描述见维基百科http://en.wikipedia.org/wiki/ABA_problem)。
参考资料:
http://blog.youkuaiyun.com/pennyliang/article/details/5993138
http://blog.youkuaiyun.com/pennyliang/article/details/6020992
http://www.research.ibm.com/people/m/michael/podc-1996.pdf
http://bbs.iieeg.com/viewthread.php?tid=354
http://hi.baidu.com/ah__fu/blog/item/9c5b1236934f84240b55a92b.html
待研究问题:cas2的实现