Lock Free Stack

ZT:http://www.cnblogs.com/overred/archive/2009/09/30/Lock-Free-Stack.html

多線程下,無鎖編程是種境界!
其實Lock-Free或Lock-Low不單單是一種技術,而是一種思想。
如前篇《High Performance Cacher》,裏面使用“僞裝雙鏈表”,使鎖儘量減少,從而提高性能。

本文將使用CAS的原子訪問方式實現一個Lock-Free Stack。
何爲CAS?通俗點就是先比較後交換,Interlocked.CompareExchange函數。
何爲原子訪問?當一個線程訪問一個資源的同時,保證其他線程不會在同一時刻訪問同一資源,如Interlocked系列函數。
.Net下BCL中的Interlocked系列函數是如何保證這一行爲的呢?
泛泛而談,實現層還是調用硬件支持,最後到CPU層面的總線鎖(具體可以參考Rotor實現,有空我單獨開篇講解)。
Lock Free Stack代碼:

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章