乙個因為沒有用volatile產生的bug

2022-09-19 07:18:12 字數 315 閱讀 3697

**在o1優化等級下編譯。

有一行**如下:

while(!test_start);

test_start是乙個全域性變數,初始值為0。某個執行緒會令該變數值為1,結束迴圈,但執行時並沒有結束迴圈。

於是開始進行除錯,發現test_start確實已經是1了,但該行**卻一直在迴圈中,於是檢視了一下彙編**:

發現第三行彙編,當判斷r3等於0時,繼續重複執行該行**,於是想到可能是因為優化後不從記憶體中讀值,加上volatile後彙編**如下:

這個時候,當r3等於0時,跳轉到第二行執行,重新從r2儲存的位址處取值,然後再進行判斷。 

收集的一些之前沒有用過的CSS樣式

將影象作為列表項標記 例項放置列表標記 本例演示在何處放置列表標記。在乙個宣告中定義所有的列表屬性 本例演示將所有針對列表的屬性設定於乙個簡寫屬性。親自試一試 如需控制 中內容與邊框的距離,請為 td 和 th 元素設定 padding 屬性 親自試一試 caption side設定 標題的位置。t...

乙個有用的定理

今天 popoqqq的時候看到了乙個他不屑於證的定理 i 偶數c i,n i 奇數c i,n n不 等於0 怎麼證明呢?開啟口胡模式 n為奇數時顯然 無論選偶數 奇數,剩下的一定是奇數 偶數 n為偶數且n 2為奇數。那我們先考慮n 2的情況,即在n的一半選數。設選奇數的答案集合為 a1,a2,an ...

乙個因為粗心的Bug

資料繫結,分頁顯示 private void updatamenu final edittext search pageid 0 listwz.setadapter null filterarray new jsonarray filterarray usedatabase.wzarray sear...