【发布时间】:2014-02-20 02:49:50
【问题描述】:
就像在 C++11 中一样,它是原子导入的,正如您在我们的旧代码中知道的那样,它使用 windows 事件 (CreateEvent/SetEvent) 进行线程同步。伪代码如下。
线程 A:
while(true)
{
if(check event is set)
break;
else
do stuff
}
线程 B:
SetEvent() //ask thread A stop.
我想知道是否在这种情况下。可以使用下面更简单的 atomic 吗,有什么 atomic bool 不能代替 event 吗?提前致谢!
std::atomic<bool> bFlag = false;
线程 A:
while(true)
{
if(bFlag)
break;
else
do stuff
}
线程 B:
bFlag = true;
[更新]
为了让问题更清楚,线程A不会写bFlag,它只是读取它来知道何时退出线程。线程B会写bFlag通知线程A停止。
解决方案中没有性能考虑。
【问题讨论】:
标签: windows multithreading events c++11 atomic