我在程序中使用了具有生产者-消费者模型的队列。我有一个线程将数据排入队列,还有一个线程将数据从队列排出。我的问题是在进行入队或出队操作时是否需要互斥锁用于这种情况?需要吗?如果在生产者端或使用者端有多个线程,我会看到需要互斥锁,但是我不确定对于我的情况是否有必要。
我的代码如下:
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();
}
是的,如果要避免可能导致UB的竞争情况,则需要使用互斥锁保护入队和出队。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句