[問題] thread 交替打印訊息

看板LinuxDev作者 (shihyuyao)時間9年前 (2016/05/15 00:26), 9年前編輯推噓3(301)
留言4則, 4人參與, 最新討論串1/1
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

05/15 09:16, , 1F
atomic操作? 這不是critial section的經典範例嗎.XD
05/15 09:16, 1F

05/15 12:39, , 2F
空迴圈本來就 busy loop,吃滿是正常的。
05/15 12:39, 2F

05/28 22:14, , 3F
operating system->ipc/synchronization
05/28 22:14, 3F

06/01 05:05, , 4F
compiler最佳化導致g_Flag沒有從記憶體重新讀取
06/01 05:05, 4F
文章代碼(AID): #1NDr6yrC (LinuxDev)
文章代碼(AID): #1NDr6yrC (LinuxDev)