一、同步和互斥的概念
1.1 简单理解
同步:我等你用完厕所,我再用。
互斥:我正在用厕所,你不能进来。
1.2 同步与互斥
同步与互斥经常一起讨论,因为互斥操作可以通过同步实现。举例来说,同事A先写完报表,经理B才能拿去汇报,B等待A完成的过程是同步。A使用会议室时,B也想使用,但必须等待,这就是互斥。经理B等A用完提醒他,这就是用同步实现互斥。
1.3 临界资源
只有一个人能同时使用的资源称为临界资源。任务A、B使用同一个串口打印时,如果同时进行,会混杂,所以需要A用完B再用,这就是互斥的实现。
1.4 新的实例
假设在一家公司里,只有一台3D打印机,两个员工A和B都需要使用这台打印机来打印他们的设计。
- 同步:员工A先将设计文件发送到打印机并开始打印。员工B不能立即开始打印,他必须等待A的打印任务完成。这就是同步,B在等待A的任务完成。
- 互斥:打印机一次只能处理一个打印任务。这意味着当A在使用打印机时,B不能使用。这就是互斥,A和B互斥地访问打印机这个资源。
在这个过程中,打印机是临界资源。我们使用了“等待-通知”的同步机制来实现对打印机的互斥访问。
1.5 改进实现
之前用flag
来控制同步和互斥ÿ