这个类的作用作者已经给了解释 —— “多线程同步,确保任一时刻只能有一个线程能进入关键代码段.”
对于这句话其实看了,会有似懂非懂的感觉,然后写代码的时候,就会完全不懂。其实主要大家不懂的原因,可能是没有理解以下几个问题

这两个问题的答案其实就是同一个,给放到一起了。首先封装成类的主要原因就是为了实现RAII 。
RAII到底是什么呢?为什么要实现它?
下面是社长的解释。

我画一下重点

其实理解析构函数,和生命周期,这句话就很好理解了。
简单来说作用就是,创建对象,在作用域(生命周期)结束时,自动调用析构函数释放资源。
所以就是为什么封装成类。
类 有构造函数和析构函数 ,利用构造函数和析构函数的机制实现RAII。
来看看社长怎么说

简单来说这个项目后面会写线程池、数据库连接池。需要用信号量、互斥量、锁来保证 “同步,保证操作的原子性”
还是不懂的话,就等我后续文章吧!
信号量是一种特殊的变量,它只能取自然数值并且只支持两种操作:等待§和信号(V).假设有信号量SV,对其的P、V操作如下:
条件变量提供了一种线程间的通知机制,当某个共享数据达到某个值时,唤醒等待这个共享数据的线程.
互斥锁,也成互斥量,可以保护关键代码段,以确保独占式访问.当进入关键代码段,获得互斥锁将其加锁;离开关键代码段,唤醒等待该互斥锁的线程.
实现部分
上述共同点
不同点
日志文件的编写与解析。
原因:本来写完lock类(线程同步机制包装类)应该就是写线程池的。但是由于在线程池类中要用到数据库连接池,数据库连接池又要用到日志。所以下期先写日志。
求赞!