boost::lock_guard可以说是一种比boost::unique_lock轻量级的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还可以设置超时。

例子如下:

boost::mutex mutex;

void foo( )

{

boost::lock_guard<boost::mutex> lock(mutex);

process(data);

///没有unlock()功能,程序结束自动析构

};

boost学习之boost::lock_guard源码分析相关推荐

  1. 深度学习库 caffe使用 源码分析 依赖库分析 caffe glog gflags openBlas prototxt yolo_darknet 转 caffe

    深度学习库 caffe使用 源码分析 依赖库分析 caffe glog gflags openBlas 本文github链接 yolo_darknet 转 caffe caffe 安装 Caffe代码 ...

  2. golang学习之negroni/gizp源码分析

    在 Go 语言里,Negroni 是一个很地道的 Web 中间件,它是一个具备微型.非嵌入式.鼓励使用原生 net/http 库特征的中间件.利用它地Use功能,我们可以很简单地自定义中间件并使用.其 ...

  3. 了不起的 Webpack HMR 学习指南(含源码分析)

    学习时间:2020.06.14 学习章节:<Webpack HMR 原理解析> 一.HMR 介绍 Hot Module Replacement(以下简称:HMR 模块热替换)是 Webpa ...

  4. FFmpeg 源码学习(一):avformat_open_input 源码分析

    一.源码方法参数分析 下面是avformat_open_input的方法及参数: /** * Open an input stream and read the header. The codecs ...

  5. Combres库 学习小结以及部分源码分析

    昨天看到有博客园网友发布了一篇关于<使用Combres 库 ASP.NET 网站优化>的文章,觉得是个挺不错的脚本优化的类库,而且目前我的项目公务员考试应战平台也有使用到Js以及css合并 ...

  6. Netty学习笔记 - 1 (带源码分析部分)

    2021年12月 北京 xxd 一.Netty是什么 Netty 是由 JBOSS 提供的一个 Java 开源框架,现为 Github 上的独立项目. Netty 是一个异步的.基于事件驱动的网络应用 ...

  7. STL学习(自学手册+源码分析)之RB -tree

    1.1 RB-tree 1.1.1 RB-tree主体部分 template <class Key, class Value, class KeyOfValue, class Compare,c ...

  8. EventBus源码分析

    简介 前面我学习了如何使用EventBus,还有了解了EventBus的特性,那么接下来我们一起来学习EventBus的源码,查看EventBus的源码,看看EventBus给我们带来什么惊喜以及编程 ...

  9. RuoYi-Vue-Plus 与 RuoYi-Cloud-Plus 高端进阶 源码分析 系列教程

    专栏地址 由项目成员 MichelleChung 书写 vue版本专栏 https://blog.csdn.net/michelle_zhong/category_11109741.html Clou ...

最新文章

  1. IntelliJ IDEA(2017)安装和破解
  2. 【数据平台】Eclipse+MapReduce开发环境(集群运行模式)
  3. Linux带给了我什么?
  4. 传奇服务端各文件用途说明
  5. python fromarray_python --- 之pil image.fromarray
  6. vive手柄按键开发说明
  7. C语言蓝桥杯刷题:等差素数列
  8. 微信小程序往数组中添加元素对象
  9. SwiftUI内功之如何设计Struct和Class不要和陌生人说话
  10. Eureka自我保护机制原理及作用enable-self-preservation
  11. 被讨厌的勇气:共同体感觉
  12. 随笔—醒悟篇之考研调剂
  13. Java8 lambda表达式详解
  14. NFT+DeFi =NFTFI
  15. gradle打包并将源码上传到私服
  16. 云服务器修改dns 114,为什么改成114dns就行?
  17. GICv3软件overview手册之虚拟化
  18. MySQL数据库鼠标操作
  19. 黑魔法:iOS链式编程
  20. 计算机在英语教学,论计算机在英语教学中的辅助作用原稿(电子版)

热门文章

  1. 从北京回来的年轻人,我该告诉你点什么?
  2. 从P560小型机B181201B故障代码识别手把手详解
  3. Angular4学习笔记(六)- Input和Output
  4. 社交系统ThinkSNS-plus(TS+)V1.0发布!
  5. 人民币数字金额转大写金额
  6. 项目开发容易出错情况统计
  7. thinkphp一句话疑难解决笔记
  8. pandas操作sql数据库
  9. Socket的getInputStream()方法
  10. 云计算的概念_云计算概念掀起涨停潮 美利云奠定板块龙头地位