[問題] thread 交替打印訊息

作者: shihyuyao (shihyuyao)   2016-05-15 00:26:32
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 做什麼處理?
謝謝
作者: alongalone (沿著孤單的路)   2016-05-15 09:16:00
atomic操作? 這不是critial section的經典範例嗎.XD
作者: Bencrie   2016-05-15 12:39:00
空迴圈本來就 busy loop,吃滿是正常的。
作者: Ommm5566 (56天團)   2016-05-28 22:14:00
operating system->ipc/synchronization
作者: tuxoko (tux)   2016-06-01 05:05:00
compiler最佳化導致g_Flag沒有從記憶體重新讀取

Links booklink

Contact Us: admin [ a t ] ucptt.com