我正在使用 C++11 和 stl 线程编写线程安全队列。WaitAndPop 方法当前如下所示。我希望能够向 WaitAndPop 传递一些东西,表明调用线程是否已被要求停止。如果等待并返回队列的元素,WaitAndPop 应该返回 true,如果调用线程正在停止,它应该返回 false。
bool WaitAndPop(T& value, std::condition_variable callingThreadStopRequested)
{
std::unique_lock<std::mutex> lock(mutex);
while( queuedTasks.empty() )
{
queuedTasksCondition.wait(lock);
}
value = queue.front();
queue.pop_front();
return true;
}
是否可以编写这样的代码?我习惯了 Win32 WaitForMultipleObjects,但找不到适用于这种情况的替代方案。
谢谢。
我已经看到了这个相关的问题,但它并没有真正回答这个问题。linux上的学习线程