几个并发的重要概念
- 同步和异步
- 并发和并行
- 临界区
- 阻塞和非阻塞
- 阻塞&非阻塞,同步&异步
- 死锁、活锁、饥饿
- 并行级别
同步和异步
- 同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有一个等待的过程(哪些情况需要使用同步呢?比如银行的转账系统)
- 异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待
- 区别:一个需要等待,一个不需要等待,在部分情况下,我们的项目开发中都会优先选择不需要等待的异步交互方式。
并发和并行
例子:
你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。
你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。
并发的关键是你有处理多个任务的能力,不一定要同时。
并行的关键是你有同时处理多个任务的能力。
例子来源:并发与并行的区别? - 知乎用户的回答 - 知乎
https://www.zhihu.com/question/33515481/answer/58849148
临界区
临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用。但是每一次