作者shihyuyao (shihyuyao)
看板LinuxDev
标题[问题] thread 交替打印讯息
时间Sun May 15 00:26:32 2016
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://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1463243196.A.D4C.html
※ 编辑: shihyuyao (175.180.117.99), 05/15/2016 00:28:59
1F:→ alongalone: atomic操作? 这不是critial section的经典范例吗.XD 05/15 09:16
2F:推 Bencrie: 空回圈本来就 busy loop,吃满是正常的。 05/15 12:39
3F:推 Ommm5566: operating system->ipc/synchronization 05/28 22:14
4F:推 tuxoko: compiler最佳化导致g_Flag没有从记忆体重新读取 06/01 05:05