您的位置:首页 > 其它

boost库中thread多线程详解3——细说lock_guard

2013-09-01 16:14 330 查看
boost::lock_guard可以说是一种比boost::unique_lock轻量级的lock, 简单一些场景可以用它就行了。

看看它的源代码也很简单:

[cpp] view
plaincopyprint?

template<typename Mutex>  

class lock_guard  

{  

private:  

    Mutex& m;  

  

    explicit lock_guard(lock_guard&);  

    lock_guard& operator=(lock_guard&);  

public:  

    explicit lock_guard(Mutex& m_):  

        m(m_)  

    {  

        m.lock();  

    }  

    lock_guard(Mutex& m_,adopt_lock_t):  

        m(m_)  

    {}  

    ~lock_guard()  

    {  

        m.unlock();  

    }  

};  

      可以看到只有两个public方法,即构造和析构函数,也就是说,使用boost::lock_guard去guard一个mutex,必然是在boost::lock_guard的对象离开其作用域时unlock它所guard的mutex,不提供提前unlock的功能。

      而boost::unique_lock则提供这个功能,除了像boost::lock_guard一样在离开作用域时unlock它guard的mutex外,boost::unique还提供unlock函数,使用者可以手动执行unlock。此外,unique_lock还可以设置超时。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: