根据安东尼威廉姆斯的说法" c ++并发行动" book,threadsafe_queue以这样的方式实现:
template<typename T>
class thredsafe_queue
{
public:
...
bool empty() const
{
std::lock_guard(internal_mutex_);
return data_queue_.empty();
}
...
};
1。我的第一个问题是关于空调的内部锁定: 像这样的代码
while(our_threasafe_queue.empty())
do_something()
无论如何,线程安全,锁定在空呼叫内或没有;对于cource,我们可以使用外部互斥锁使其成为线程安全的。但内部锁定的目标仍不明确。
2。第二个是关于threadsafe_queue中公共空函数的权宜之计。