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
-
类图
-
条件变量的使用规范
一个线程
锁住mutex
while(条件==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 -
测试: