1. 程式人生 > 實用技巧 >偽共享,cache line,無鎖競爭

偽共享,cache line,無鎖競爭

大佬的詳細解釋:https://www.cnblogs.com/cyfonly/p/5800758.html
在這裡插入圖片描述
猜測:第三級快取,L3裡面的資料是共CPU1和2共享的,L3是由N個cache line組成的
然後兩個執行緒競爭鎖的時候,是以快取行為最小單位的?其實就是競爭這個快取行的擁有權
那如果控制一個快取行裡面只有一個變數,比如用填充的方式,是不是就能減少鎖的競爭
相當於一個變象的空間換時間(建立在快取中存在兩個執行緒都需要都資料都情況下,如果不存在要去主存中再找)
解決:填充,或者@Contended註解,這個註解在concurrentHashMap裡有用
在這裡插入圖片描述
就用來算size的這個

補充:暫存器可以用來儲存資料,可以當成離CPU最近最快的快取層。但是暫存器裡的值不能保證一定是正確的,記憶體裡的值可能更新過了,所以可以加volatile來強制去讀記憶體讀值。

記憶體更新會不會通知暫存器?
在這裡插入圖片描述
和朋友聊了下還是沒明白,回頭明白了更新

https://blog.csdn.net/hanmindaxiongdi/article/details/81159314
在這裡插入圖片描述