volatile 每次都從該位址讀取

2021-05-12 10:48:55 字數 594 閱讀 6598

volatile關鍵字是一種型別修飾符,用它宣告的型別變數表示可以被某些編譯器未知的因素更改,比如:作業系統、硬體或者其它執行緒等。遇到這個關鍵字宣告的變數,編譯器對訪問該變數的**就不再進行優化,從而可以提供對特殊位址的穩定訪問。

使用該關鍵字的例子如下:

int volatile nvint;

>>>>當要求使用volatile 宣告的變數的值的時候,系統總是重新從它所在的記憶體讀取資料,即使它前面的指令剛剛從該處讀取過資料。而且讀取的資料立刻被儲存。

例如:

volatile int i=10;

int a = i;

...

//其他**,並未明確告訴編譯器,對i進行過操作

int b = i;

>>>>volatile 指 出 i是隨時可能發生變化的,每次使用它的時候必須從i的位址中讀取,因而編譯器生成的彙編**會重新從i的位址讀取資料放在b中。而優化做法是,由於編 譯器發現兩次從i讀資料的**之間的**沒有對i進行過操作,它會自動把上次讀的資料放在b中。而不是重新從i裡面讀。這樣以來,如果i是乙個暫存器變數 或者表示乙個埠資料就容易出錯, 所以說volatile可以保證對特殊位址的穩定訪問。

讓Logstash每次都從頭讀檔案及常見問題

input output 要點就在這行 sincedb path dev null 了!該引數用來指定 sincedb 檔名,但是如果我們設定為 dev null這個 linux 系統上特殊的空洞檔案,那麼 logstash 每次重啟程序的時候,嘗試讀取 sincedb 內容,都只會讀到空白內容,也...

創新都從懶人下手

如今的年老人能夠不曉得70年月的盤算機究竟是什麼樣子。誰人時分的盤算機是乙個偉人,體積巨集大,但似乎很懦弱,必需放置在機房外面。人們要用盤算機,那就得換上拖鞋,穿上白大褂。並且,當你預定不上的時分,你必需得列隊等著。我記得賈伯斯列傳裡說,他拿著乙個剛具雛形的 粗拙的團體電腦去找惠普,被惠普婉拒,由於...

所有型別都從Object型別派生

clr要求每乙個型別都最終從object型別派生,如下 class typer class typer object 上面是完全相等的。所有的型別最終從object派生,每乙個型別都有一組最基本的方法 equals 如果兩個物件相等,返回true gethashcode 返回物件值的乙個雜湊碼 to...