我有两个线程:“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;

08-18 04:22