【发布时间】:2015-03-10 14:36:26
【问题描述】:
我有一个从设备捕获数据的线程。我从 gui 启动/停止线程。目前,线程会定期检查 appcontext 中的 bool 成员 isCapturingEnabled。我从 gui 切换此 bool 成员以停止线程。
这是我应该使用互斥锁的情况吗?因为捕获线程和主线程可能会同时尝试写入和读取bool。
【问题讨论】:
-
periodically checks a bool为什么不是条件变量,它是为这些场景制作的?如果它是一个线程,为什么要打扰或者你没有透露所有内容? -
从您的描述看来,GUI 是唯一写入布尔值的线程。不是这样吗?
-
@mstbaum 实际上,捕获线程也会在异常情况下写入,线程停止并将 bool 设置为 false
-
@DumbCoder 一个条件变量适合等待,什么都不做,直到条件变为真——这对于请求工作线程终止来说是一个糟糕的用例——它更适合相反的用途案例 - 等待工人完成。
-
为了简单起见,
std::atomic<bool>怎么样? stackoverflow.com/questions/16111663/…
标签: c++ mutex boost-mutex