【Boost】boost库中thread多线程详解3——细说lock_guard
来源:互联网 发布:g1x mark ii 知乎 编辑:程序博客网 时间:2024/04/28 15:33
boost::lock_guard可以说是一种比boost::unique_lock轻量级的lock, 简单一些场景可以用它就行了。
看看它的源代码也很简单:
可以看到只有两个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还可以设置超时。
看看它的源代码也很简单:
- 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还可以设置超时。
0 0
- 【Boost】boost库中thread多线程详解3——细说lock_guard
- 【Boost】boost库中thread多线程详解3——细说lock_guard
- boost库中thread多线程详解3——细说lock_guard
- boost库中thread多线程详解3——细说lock_guard
- 【Boost】boost库中thread多线程详解1——thread入门与简介
- 【Boost】boost库中thread多线程详解2——mutex与lock
- 【Boost】boost库中thread多线程详解4——谈谈recursive_mutex(递归式互斥量)
- 【Boost】boost库中thread多线程详解5——谈谈线程中断
- 【Boost】boost库中thread多线程详解6——线程组简单例子
- 【Boost】boost库中thread多线程详解7——wait与timed_wait简单例子
- 【Boost】boost库中thread多线程详解4——谈谈recursive_mutex(递归式互斥量)
- 【Boost】boost库中thread多线程详解2——mutex与lock
- 【Boost】boost库中thread多线程详解4——谈谈recursive_mutex
- 【Boost】boost库中thread多线程详解5——谈谈线程中断
- 【Boost】boost库中thread多线程详解6——线程组简单例子
- 【Boost】boost库中thread多线程详解7——wait与timed_wait简单例子
- 【Boost】boost库中thread多线程详解8——call_once仅运行一次
- 【Boost】boost库中thread多线程详解9——thread_specific_ptr线程局部存储
- 【Boost】boost库中thread多线程详解2——mutex与lock
- YTU 2811: 打鱼还是晒网
- QT5使用消息机制及程序发布相关
- Proxy-Style Redis集群设计
- Makefile中的-C和M=解析
- 【Boost】boost库中thread多线程详解3——细说lock_guard
- opendaylight实验远程调试
- oracle 以及 mysql 求经纬度之间距离的函数
- python读取剪切板内容
- Redis和MySQL的结合方案
- Android Glide图片加载框架图片变色变绿解决方法
- 知识片段---textfield限制字符输入个数(包括汉子)
- 关于地址转换
- 解决android数据库并发访问异常