無鎖隊列
睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接
轉載:http://hi.baidu.com/ah__fu/blog/item/9c5b1236934f84240b55a92b.html
下面是他寫的無鎖隊列的文章:
Michael &Scott 無鎖隊列 C++ 實現: http://www.cnblogs.com/napoleon_liu/archive/2010/08/07/1794566.html
這個MS-Queue實現了安全的多個線程入隊,多個線程出隊。不過因為階段需要new出來,會有一點影響性能。
GCC 之 cas和cas2:http://www.cnblogs.com/napoleon_liu/articles/2006428.html
piboye同學實現了原子的比較交換操作。如果是GCC4以上,有福了,GCC的內置函數就有。
原理上來說,cmpxchg8b這個指令實現了原子的比較和交還。但前面為什么要加LOCK呢?
LOCK是一個指令的描述符,表示后續的指令在執行的時候,在內存總線上加鎖。總線鎖會導致其他幾個核在一定時鐘周期內無法訪問內存。雖然總線鎖會影響其他核的性能,但比起操作系統級別的鎖,已經輕量太多了。
關于LOCK,這篇帖子講得很好:lock指令的秘密, http://ooooooo.blogbus.com/logs/1357939.html
多讀多寫 無鎖 lifo 隊列:http://www.cnblogs.com/napoleon_liu/archive/2011/04/06/2006547.html
再提供一個template的版本,就更完美了。
RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成