1. 简介

多线程环境下利用pthread进行共享资源的互斥操作,该模块使用了Thread safety annotations技术,若使用了cling c++解析器,可以在编译时进行线程安全分析,如果是其他解析器也能正常编译

2. 类与接口

MutexLock类有个私有内部类UnassignGuard用于解除监控,UnassignGuard利用线程id唯一标识tid是否空来监控,解除监控将tid置0,监控时将tid置为非空,构造时解除监控,析构时设置监控

MutexLock用于锁操作,构造时初始化mutex,析构时释放mutex;
① bool isLockedByThisThread() const
判断锁是否被当前线程所持有

② void assertLocked() const ASSERT_CAPABILITY(this)
断言当前锁被当前线程持有

③ void lock() ACQUIRE()
加锁

④ void unlock() RELEASE()
解锁

⑤ pthread_mutex_t* getPthreadMutex() /* non-const */
获取mutex

MutexLockGuard局部锁,构造时加锁,析构时解锁

3. 源码

Github

muduo Mutex详解相关推荐

  1. C++11 并发指南三(std::mutex 详解)

    上一篇<C++11 并发指南二(std::thread 详解)>中主要讲到了 std::thread 的一些用法,并给出了两个小例子,本文将介绍 std::mutex 的用法. Mutex ...

  2. std::mutex详解

    Mutex 又称互斥量,C++ 11中与 Mutex 相关的类(包括锁类型)和函数都声明在 <mutex> 头文件中,所以如果你需要使用 std::mutex,就必须包含 <mute ...

  3. 2021SC@SDUSC BRPC代码分析(七) —— bthread综述、Butex及mutex详解

    2021SC@SDUSC 文章目录 一.bthread的背景知识学习 二.代码分析 总结 一.bthread的背景知识学习 经过前面6篇代码分析,我将BRPC一个极其实用的工具--bvar做了全面系统 ...

  4. go mutex详解

    数据结构 type Mutex struct {state int32sema uint32 } state表示mutex的状态,是32位的整型变量,内部实现时把该变量分成四份,用于记录Mutex的四 ...

  5. muduo scoped_ptr详解

    1. 简介 scoped_ptr类似于智能指针只能在作用域里使用,不希望被转让. 2. 类与接口 #ifndef _SCOPE_PTR_HH #define _SCOPE_PTR_HH // scop ...

  6. muduo BlockingQueue详解

    1. 简介 利用条件变量和std::deque实现阻塞队列 2. 类与接口 插入数据,有2个版本 void put(const T& x) 非常量可以初始化一个底层const,反过来却不行 可 ...

  7. muduo StringPiece详解

    1. 简介 该StringPiece是PCRE的实现,是对字符串的一个proxy类而已(即设计模式中的代理模式). 2. 背景 很多时候,当传入一个字符串到函数时,往往只是读取字符串时 若使用std: ...

  8. muduo Date详解

    1. 简介 用于Julian Day和普通年月日的转换 2. 类与接口 2.1 class Date : public copyable ① Date::Date(int y, int m, int ...

  9. muduo Timestamp详解

    1. 简介 Timestamp用于提供时间戳相关的工具函数. 2. 类与接口 ① string toString() const 返回时间的字符串形式,例如1649224501.687051 ② st ...

最新文章

  1. 一文搞定 GBDT、Xgboost 和 LightGBM 的面试
  2. Android 使用ViewPager 做的半吊子的图片轮播
  3. (转)博弈问题与SG函数
  4. [C++11]通过using定义基础类型和函数指针别名
  5. 融资2.5亿的国产浏览器,被曝只是打包chrome
  6. 报表移动端如何进行移动设备绑定与撤销
  7. SPring cloud (3)A Ribbon 负载均衡 配置初步
  8. 说说BXP的实际中的应用(转)
  9. 数字密码锁设计(利用数字逻辑电路的电子密码锁)
  10. 400+条实用C/C++框架、库、工具整理 ,你能想到的都在这里了
  11. Linux 上安装Realtek瑞昱网卡驱动
  12. Linux系统备份及迁移到新硬盘
  13. IN4007和IN4148的作用
  14. 企业信用代码等常用的正则验证
  15. 用python进行列联表卡方检验
  16. 高通平台sensor学习
  17. Java 环境变量的配置的详细教程(Windows 10)
  18. Ubuntu 18.04.3 双屏显示其中一个屏幕黑屏无法使用的问题 显卡驱动安装问题
  19. 根据GSE号在NCBI批量获取文献
  20. 配置 Vue 实例( 选项 )

热门文章

  1. 为什么要做接口测试?好处是什么?什么是接口?不同接口类型的差异是什么?
  2. Vue学习笔记(二)组件化和模块化
  3. 数据库基础操作和配置的整合集成-新手适用
  4. c语言isnumber函数用法,isnumber函数实例应用
  5. 计算机操作员评分标准,计算机操作员技能评分记录表2.doc
  6. 上海市浙江商会领导一行走访闪马智能,交流企业发展新趋势
  7. css3平移、旋转、倾斜、缩放、动画效果的实现
  8. 2020 年 4 月编程语言排行榜
  9. centos挂载U盘失败no valid journal superblock found EXT4-fs (sda): error loading journal
  10. mysql error 1118_mysql 5.7 建表时报错:ERROR 1118 (42000)