看板 LinuxDev 關於我們 聯絡資訊
https://gist.github.com/anonymous/f80a470f6a840918c4d6ca92d047e80e 我上面在 android 上跑 這兩thread 無法用g_Flag控制交錯打印訊息 只印出就下面兩行沒了 thread2_fun g_Flag=1, g_Flag addr=0x557a133008 thread1_fun g_Flag=2, g_Flag addr=0x557a133008 可是在linux 上可以很正常不斷交錯打印這兩行 我沒使用sleep 也沒 block 問題, 就是g_Flag 沒成立就一直在繞迴圈 , 一直想不明白會什麼只能印這兩行就沒了 請問這可能是什麼原因? 還是android 上 while 空轉會造成 cpu busy , kernel 會對這兩個thread 做什麼處理? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.180.117.99 ※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1463243196.A.D4C.html ※ 編輯: shihyuyao (175.180.117.99), 05/15/2016 00:28:59
alongalone: atomic操作? 這不是critial section的經典範例嗎.XD 05/15 09:16
Bencrie: 空迴圈本來就 busy loop,吃滿是正常的。 05/15 12:39
Ommm5566: operating system->ipc/synchronization 05/28 22:14
tuxoko: compiler最佳化導致g_Flag沒有從記憶體重新讀取 06/01 05:05