我正在程序中使用生產者 - 消費者模型的隊列。我有一個線程保持隊列中的數據,並且一個線程保持隊列中的數據出隊。我的問題是在進行入隊或出隊操作時,是否需要對此場景進行互斥鎖?需要嗎?如果我在生產者或消費者端有多個線程,我就會看到互斥體的需求,但我不確定是否需要我的情況。2個線程的C++隊列
我的代碼如下:
template <class T>
class myqueue {
private:
queue<T> localqueue;
boost::mutex insert;
public:
myqueue(){}
~myqueue(){}
void enqueue(T in_value) {
boost::mutex::scoped_lock insert_lock = boost::mutex::scoped_lock(
this->insert);
localqueue.push(in_value);
insert_lock.unlock();
}
注意不僅排隊和出隊需要鎖定 - 有超出更復雜的問題,如無效的迭代器和*尺寸()*的問題。我不確定STL隊列是實現線程通信的最佳起點。 – tofro