这就像一个线程池上下文。我有一个全局原子变量,它指示工作线程是否应该退出:
atomic<bool> exit;
此类工作线程按如下方式循环执行:
while (true) {
std::unique_lock lock{mut};
cv.wait(lock, [] {
return !queue.empty() || exit.load();
};
if (exit.load()) {
return;
}
// take task from queue
}
还有其他有效的方法(具有更好的性能、更低的延迟)来检查我们是否应该退出工作线程吗?