我有两个线程:“main”和“worker”,以及一个全局变量bool isQuitRequested
,它将由main
线程用于通知worker
,何时该退出其while循环(类似这样:while(isQuitRequested == false) { ... do some stuff ... }
)
现在,我有点担心...
考虑到只有一个线程(isQuitRequested
)执行main
操作,而另一个(isQuitRequested = true
)仅执行检查,而没有其他操作,我是否需要对worker
使用某种互斥保护?
我读过What could happen if two threads access the same bool variable at the same time?。
我没有类似的情况,但情况不一样...
最佳答案
您尚未指定要使用的语言,并且在发布的小代码段中可能是C#,Java或C++。以下是针对每个“模式”的一些常见解决方案:
C#:
volatile bool isQuitRequested;
Java:
volatile boolean isQuitRequested;
C++:C++中的
volatile
几乎没有用。与:std::atomic<bool> isQuitRequested;