C++实现简单的线程安全队列

2021-06-07 21:02

阅读:460

标签:return   one   实现   安全   一个   element   rgb   private   unique   

/*
实现一个线程安全的队列
*/

template class T>
class SafeQueue
{
public:
    SafeQueue(void):q(),m(),c()
    {}
    ~SafeQueue(void)
    {}
    // Add an element to the queue.
    void enqueue(T t)
    {
        std::lock_guard<:mutex>lock(m);
        q.push(t);
        c.notify_one();
    }

    // Get the "front"-element.
   // If the queue is empty, wait till a element is avaiable.
    T dequeue(void)
    {
        std::unique_lock<:mutex>lock(m);
        while (q.empty())
        {
            // release lock as long as the wait and reaquire it afterwards.
            c.wait(lock);
        }
        T val = q.front();
        q.pop();
        return val;
    }


private:
    std::queue q;
    mutable std::mutex m;
    std::condition_variable c;
};

 

C++实现简单的线程安全队列

标签:return   one   实现   安全   一个   element   rgb   private   unique   

原文地址:https://www.cnblogs.com/LuckCoder/p/14549952.html


评论


亲,登录后才可以留言!