1)lock-free 算法
Lock-free 算法一般比基於鎖的算法要好: 緩存
可是 lock-freedom 並非萬能藥。下面是一些很明顯的不利因素: 數據結構
2) CAS: 架構
CAS的原理是,將舊值與一個指望值進行比較,若是相等,則更新舊值
併發
CAS 的原子性徹底取決於硬件實現。大多數 Intel 和 AMD 的 CPU 採用了一種叫作 MOSEI 緩存一致性協議來管理緩存。這種架構下,處理器緩存內 CAS 操做相對成本低廉。但一旦資源爭用,就會引發緩存失效和總線佔用。緩存越失效,總線越被佔用,完成 CAS 操做也越被延遲。緩存爭用是程序可伸縮性殺手。固然對於非 CAS 內存操做來講也是如此,但 CAS 狀況更加槽糕。 dom
3)fetchandadd 性能
原子隊列等則被證實不足以良好的同步兩個以上的線程 測試
4) pthread_lock: fetch
當多個控制線程共享相同的內存時,須要確保每個線程看到一致數據視圖。若是不存在讀取數據或者全部數據只讀時不會存在一致性問題。若是某個線程正在修改變量而其餘線程也能夠讀取或者修改這個變量的時候就須要對這些線程進行同步。在變量修改多於一個存儲器訪問週期時可能出現不一致的錯誤 優化