volatile關(guān)鍵字的作用之一不讓編譯器優(yōu)化(c volatile關(guān)鍵字的作用)

發(fā)布時(shí)間:2024-01-27
本文為大家介紹volatile關(guān)鍵字的作用之一不讓編譯器優(yōu)化(c volatile關(guān)鍵字的作用),下面和小編一起看看詳細(xì)內(nèi)容吧。
volatile 通常用于java 并發(fā)編程,以保持內(nèi)存可見性并防止指令重新排序。內(nèi)存可見性(memory visibility):所有線程都能看到共享內(nèi)存的最新狀態(tài);防止指令重排:在基于偏序關(guān)系的happens-before內(nèi)存模型中,指令重排技術(shù)極大地提高了程序執(zhí)行效率,但也引入了一些問題。
volatile 有維護(hù)內(nèi)存可見性的特殊規(guī)則:讀取、加載和使用操作必須連續(xù)發(fā)生;分配、存儲(chǔ)和寫入操作必須連續(xù)發(fā)生;每次讀取前必須從主存中刷新最新值;立即同步回主內(nèi)存。
也就是說,被volatile關(guān)鍵字修飾的變量,隨時(shí)看到它的最新值。線程1 中變量v 的最新修改對(duì)線程2 可見。
volatile防止指令重排策略:在每個(gè)volatile寫操作前插入一個(gè)storestore屏障;在每次易失性寫入操作后插入一個(gè)storeload 屏障;在每個(gè)易失性讀取操作之后插入一個(gè)loadload 屏障;在每個(gè)易失性讀取操作之后插入一個(gè)loadload 屏障;在易失性讀取操作之后插入一個(gè)loadstore 屏障。
注意:這樣的指令重排序問題只發(fā)生在happens-before 內(nèi)存模型中。
好了,volatile關(guān)鍵字的作用之一不讓編譯器優(yōu)化(c volatile關(guān)鍵字的作用)的介紹到這里就結(jié)束了,想知道更多相關(guān)資料可以收藏我們的網(wǎng)站。
上一個(gè):索尼游戲機(jī)黑屏怎么辦,索尼m27i黑屏怎么辦
下一個(gè):發(fā)電站水文監(jiān)測(cè)系統(tǒng)-風(fēng)途出品-礦用井下水文監(jiān)測(cè)系統(tǒng)

胡南茶文化的歷史發(fā)展
茶葉流通之官茶
win7家庭版如何更改桌面圖標(biāo)位置(win7家庭版如何更改桌面圖標(biāo)顏色)
大白菜系統(tǒng)遷移教程,大白菜有系統(tǒng)轉(zhuǎn)移功能嗎機(jī)械轉(zhuǎn)到固態(tài)硬盤里
balancesystems聲波傳感器(意大利品牌質(zhì)量保障細(xì)節(jié)決定成敗)
PGX系列智能光照培養(yǎng)箱的智能優(yōu)點(diǎn)
拿結(jié)婚證需要什么手續(xù)
電腦十大耐玩網(wǎng)絡(luò)游戲,哪些是耐玩的網(wǎng)絡(luò)游戲
油茶主要病害空間分布格局規(guī)律的研究
RC1206FR-07430RL,1206 430Ω 1% 1/4W 電阻
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos