java多線程指令重排序引發的髒讀

如果A、B兩個處理器同時有兩個線程執行,可能會得到x=y=0這種結果,導致的原因時由於代碼執行時進行了讀、寫指令重排序,即多線程中經常出現的髒讀現象。正常程序執行爲處理器A執行A1將值寫入緩存區A,然後執行A3將值刷新到共享內存中,然後在執行A2讀b值操作,即A1-A3-A2。但經過指令重排序後,可能會出現這種執行情況,A1-A2-A3,這樣就會導致B處理器寫入的b數據沒有更新進共享內存而出現了髒
相關文章
相關標籤/搜索