C++11线程安全队列实现

实现了一个C++11线程安全队列,可以作为模板使用。

#include 
#include 
#include 
#include 
#include 
#include
#include 

template 
class threadsafe_queue {
private:
    struct node { // 存储了数据和下一个节点指针的节点
        std::shared_ptr data;
        std::unique_ptr next;
    };

    std::mutex head_mutex; // 头指针互斥锁
    std::unique_ptr head; // 头指针
    std::mutex tail_mutex; //
    node *tail; // 尾指针
    std::condition_variable data_cond;
    node* get_tail() { // 获取尾部节点指针
        std::lock_guard tail_lock(tail_mutex);
        return tail;
    }
    // pop头结点
    std::unique_ptr pop_head() {
        auto old_head = std::move(head);
        head = std::move(old_head->next);
        return old_head;
    }
    // 线程等待消息队列数据,获取锁
    std::unique_lock

你可能感兴趣的:(C++,c++,c++11,阻塞队列,面试,线程安全)