如果有两个线程访问全局变量,那么许多教程都表示,使变量易失性,以防止编译器将变量缓存在寄存器中,从而无法正确更新变量。但是,两个线程都访问共享变量是需要通过互斥保护的,不是吗?但是在这种情况下,在线程锁定和释放互斥锁之间,代码处于一个关键部分,其中只有一个线程可以访问变量,在这种情况下,变量不需要是易失性的?那么,在多线程程序中易失性的用途/用途是什么呢?何时使用易失性与多线程?
3 回答
慕森王
TA贡献1777条经验 获得超3个赞
/* global */ bool flag = false;while (!flag) {}
if (!flag) { while (true) {} }
慕妹3146593
TA贡献1820条经验 获得超9个赞
volatile bool flag = false;while (!flag) { /*do something*/}
- 3 回答
- 0 关注
- 357 浏览
添加回答
举报
0/150
提交
取消