volaite實現原理

volaite的作用:1保證變量對所有線程可見;2.禁止指令重排序

可見性是指:讀取時都從主內存讀取;修改後立即寫入主內存,使其他工作內存數據失效;

重排序:內存屏障會爲指令的執行提供以下保障

1.不會把後邊的代碼排到內存屏障之前;

2.不會把前門的代碼排到內存屏障之後;

3.在執行到內存屏障修飾的指令時前面的代碼全部執行完成;

4.強制將工作內存值的修改刷新至主內存;

5.如果是寫操作,會導致其他線程工作內存中的緩衝失效。

volatile實現原理

1)在volatile寫操作的前面插入一個StoreStore屏障,保證volatile寫操作不會和之前的寫操作重排序。

2)在volatile寫操作後邊插入一個SroreLoad屏障,保證volatile寫操作不會和之後的讀操作重排序。

3)在volatile讀操作的後邊增加一個loadLoad屏障+LoadStore屏障。保證volatile讀操作不會和之後的讀操作,寫操作重排序。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章