日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

初步认识Volatile-CPU层面的内存屏障

發布時間:2024/4/13 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 初步认识Volatile-CPU层面的内存屏障 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是內存屏障?從前面的內容基本能有一個初步的猜想,內存屏障就是將?store bufferes中的指令寫入到內存,從而使得其他訪問同一共享內存的線程的可見性。

X86的memory barrier指令包括lfence(讀屏障) sfence(寫屏障) mfence(全屏障)Store Memory Barrier(寫屏障)?告訴處理器在寫屏障之前的所有已經存儲在存儲緩存(store bufferes)中的數據同步到主內存,簡單來說就是使得寫屏障之前的指令的結果對屏障之后的讀或者寫是可見的

Load?Memory Barrier(讀屏障)?處理器在讀屏障之后的讀操作,都在讀屏障之后執行。配合寫屏障,使得寫屏障之前的內存更新對于讀屏障之后的讀操作是可見的

Full Memory Barrier(全屏障)?確保屏障前的內存讀寫操作的結果提交到內存之后,再執行屏障后的讀寫操作

有了內存屏障以后,對于上面這個例子,我們可以這么來改,從而避免出現可見性問題

總的來說,內存屏障的作用可以通過防止CPU對內存的亂序訪問來保證共享數據在多線程并行執行下的可見性?

但是這個屏障怎么來加呢?回到最開始我們講volatile關鍵字的代碼,這個關鍵字會生成一個Lock的匯編指令,這個指令其實就相當于實現了一種內存屏障

這個時候問題又來了,內存屏障、重排序這些東西好像是和平臺以及硬件架構有關系的。作為Java語言的特性,一次編寫多處運行。我們不應該考慮平臺相關的問題,并且這些所謂的內存屏障也不應該讓程序員來關心。

?

總結

以上是生活随笔為你收集整理的初步认识Volatile-CPU层面的内存屏障的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。