學習筆記---Volatile

併發編程中的三個問題:

  1. 原子性
  2. 可見行
  3. 有序性

涉及的問題:指令重排

指令重排對單線程沒有影響,但是對多線程,想要併發程序正確的執行,必須保證原子性、可見性、有序性。

Volatile保證可見行,但沒能保證原子性;而它禁止了指令重排,一定程度上保證了有序性。

自增操作不保證原子性,因爲是兩個步驟。

 

總結:對於volatile修飾的變量,一旦被修改,會存在以下操作:

  1. 強制將對緩存的修改立即寫入主存;
  2. 使其他cup中對應的緩存無效;
  3. 防止指令重排;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章