有volatie修飾的變量,每次操作時遵循下面動作:
從內(nèi)存取值?--->?放入寄存器?---->?操作?---->寫回內(nèi)存
沒有volatie修飾的變量,操作可能遵循(可能就是不是所有情況都如此):
從內(nèi)存取值?--->?放入寄存器?---->?第一次操作?----->?第二次操作(此時仍操作寄存器中的值)?……?---->第N次操作?---->寫回內(nèi)存
volatile變量的修改要求即時被所有cpu可見,所以會要求cache一致性。對一些weak?memory?model的cpu,還有對memory?access?order的限制。