并发、并行、同步、异步、阻塞、非阻塞概念整理

时间:2022-02-08 17:57:33

1. 并发与并行

并发是指在一个时间段内, 有多个程序同时在CPU上运行,但是任意时刻只有一个程序在CPU上运行

    一个时间段内能够完成多个程序的切换,所以例如在1s之内, 执行了100个程序,

并行是指在任意时刻点上,有多个程序同时运行在CPU上;

    例如我们的CPU有四个核心, 那么在一个时刻点上最大程序运载量为4

 

所以我们平时所说的高并发,但少有听说过高并行,正是因为我们CPU的核心数有限,下面举一个例子来说明这两者的区别:情况是开水没有,水壶要洗,茶壶茶杯要洗;火生了,茶叶也有了该怎么办?

  并发版:洗好水壶,灌满凉水,并烧水,然后利用烧水的时间完成洗茶壶、洗茶杯、放茶叶等工作,最后泡茶喝;

  并行版: A洗好水壶、灌满凉水,并烧水; B洗茶壶; C洗茶杯,放茶叶;(A、B、C、D均代表某个人)

 

2.同步与异步

同步是指程序代码调用IO操作的时候, 需要等到IO操作完成之后才返回的运行方式;

异步:是指程序代码调用IO操作的时候,不需要等到IO操作完成之后才返回的运行方式

 

3.阻塞与非阻塞

阻塞:是指调用函数时候当前线程/进程挂起

非阻塞: 是指调用函数时候当前线程/进程不会被挂起,而是立即返回