【发布时间】:2020-10-07 15:08:05
【问题描述】:
我想在我的程序中使用一个简单的线程安全 std::queue,它有多个线程访问同一个队列。我首先想到的是使用互斥锁保护队列操作,如下所示:
/*Enqueue*/
mutex.lock();
queue.push();
mutex.unlock();
/*Dequeue*/
mutex.lock();
val = queue.front
mutex.unlock();
/*some operation*/
mutex.pop();
我已经看到了许多使用条件变量实现线程安全队列的强大实现。 https://stackoverflow.com/a/16075550/3598205 。如果我只有两个线程访问同一个队列,性能会有显着差异吗?
【问题讨论】:
-
这完全取决于访问模式。如果您关心性能,则需要进行概要分析。