具有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();
    }
克里斯多夫

是的,如果要避免可能导致UB的竞争情况,则需要使用互斥锁保护入队和出队。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章