本文主要是介绍(P14)muduo_base库源码分析:互斥锁MutexLock/MutexLockGuard,条件变量Condition,倒计时门闩量CountDownLatch,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 1.互斥锁MutexLock/MutexLockGuard
- 2.条件变量Condition
- 3.倒计时门闩量CountDownLatch
1.互斥锁MutexLock/MutexLockGuard
-
MutexLock类图
MutexLockGuard类图,此类更加常用,使用RAII技法封装
-
eg:src\14\jmuduo\muduo\base\Mutex.h
-
测试代码:src\14\jmuduo\muduo\base\tests\Mutex_test.cc
src\14\jmuduo\muduo\base\tests\CMakeLists.txt -
测试:
2.条件变量Condition
-
类图
-
条件变量的使用规范
一个线程
锁住mutexwhile(条件==true)等待wait_cond(实际上做了:解锁,等待条件变量,再返回之前加锁三件事情)
解锁mutex另外一个线程可以去改变条件
锁住mutex更改条件(使得上面的线程的所等待的条件可以满足)signal或者broadcast
解锁
(signal或者broadcast 通知移动到外面也行)
3.倒计时门闩量CountDownLatch
-
对条件变量的封装
既可以用于所有子线程等待主线程发起 “起跑”(主线程通过cond通知子线程)
也可以用于主线程等待子线程初始化完毕(子线程到达一定的状态)才开始工作
-
eg:
src\14\jmuduo\muduo\base\CountDownLatch.h
src\14\jmuduo\muduo\base\CountDownLatch.cc -
测试eg:src\14\jmuduo\tests\CountDownLatch_test1.cc
src\14\jmuduo\tests\CMakeLists.txt -
测试:
-
测试eg:src\14\jmuduo\tests\CountDownLatch_test2.cc
src\14\jmuduo\tests\CMakeLists.txt -
测试:
这篇关于(P14)muduo_base库源码分析:互斥锁MutexLock/MutexLockGuard,条件变量Condition,倒计时门闩量CountDownLatch的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!