1 并发
并发进程/线程
- 在内存中同时存在的若干个进程/线程,由操作系统的调度程序采用适当的策略将他(们)调度至CPU(s)上运行,同时维护他们的状态队列。
- 多个并发进程/线程从宏观上是同时在运行;
- 从微观上看,他们的运行过程是走走停停;
- 并发的进程/线程之间是交替执行(Interleaving)。
- 注:此后课中不再刻意区分并发进程和并发线程,他们都可以理解为运行的实体和调度的单位。
并发进程之间的关系
- 独立关系
- 并发进程分别在自己的变量集合上运行
- 例如:chrome进程和music进程
- 交互关系
- 并发进程执行过程中需要共享或是交换数据
- 例如:银行交易服务器上的receiver进程和handler进程
- 交互的并发进程之间又存在着竞争和协作的关系
2 竞争
竞争(RACE)
![在这里插入图片描述](https://img-blog.csdnimg.cn/c9dd03ead40a4870afad60c663475926.png)
3 协作
协作(COOPERATION)
![在这里插入图片描述](https://img-blog.csdnimg.cn/750a315cf2c24138a9f9fcb64c7606f7.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/b0e25af72e57471ab998d27b76bcf4b5.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/6cfcbc20b8544024a9b304ecce826949.png)
4 异步产生的错误
异步
- Asynchronous means RANDOM!
- 会引发竞争条件(Race Condition):一种这样的情况: 多个进程并发操作同一个数据导致执行结果依赖于特定的 进程执行顺序。
5 同步
- 进程同步是一种维持协作进程数据一致性的机制。
- 同步的工具
- 互斥锁
- 信号量