Lock in C++ 11

基于RAII机制(resource acquisition is initialization)

1.std::unique_lock

更灵活,可锁多个mutex,消耗大

    void push(T &&t)
    {
        std::shared_ptr<T> new_data(std::make_shared<T>(std::forward<T>(t)));
        std::unique_ptr<node> new_tail(new node);
        node *p = new_tail->get();
        {
            std::unique_lock<std::mutex> ulkt(tail_mut);
            p->data = new_data;
            p->next = nullptr;
            tail->next = std::move(new_tail);
            tail = p;
        }
        data_cond.notify_one();
    }

参考文章:  简单的C++高并发安全队列

2.std::lock_guard

消耗少,只锁一个mutex

posted @ 2021-07-23 10:57  hitzzq  阅读(32)  评论(0编辑  收藏  举报