1. 程式人生 > >volatile能解決cache的資料一致性嗎?答案是不能

volatile能解決cache的資料一致性嗎?答案是不能

以前對volatile的瞭解,都是可以防止被編譯器優化,從而從記憶體中都讀寫資料。

但當ddr中的資料被cache了以後,然後又是被命中了,那麼下次你去讀寫資料時,CPU還是中cache中去操作的。這就引來了和硬體的不一致性,但簡單的volatile也不能解決cache的一致性。因為CPU會認為當前的資料就是從記憶體中去讀寫的(cache也屬於記憶體級別)。所以只能通過專門的cache一致性的writeback和invalid來完成。

總結,cache場合下volatile不能解決一致性問題。要通過cache自身來完成。傳統的volatile不單單是隻認可ddr記憶體,cache也是被認可的,是CPU認可的讀寫記憶體。