[问题] 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