并发
在一个时间段内,有几个程序在同一个cpu上面运行,但是任意时刻只有一个程序在cup上运行。(一个cpu在一个时间点上只能运行一个程序,因为cpu的运算速度非常快,可达上亿次每秒,如在一秒内可以切换100个进程时,但是因为我们感觉不出cpu的切换,所以错觉是几个程序在同时运行的)
并行
指的是在任意时刻上,有多个程序运行在不同的cpu上。(如8个cpu的计算机,每个cpu上同一个时刻,有一个程序运行的时候,那么可以成并行数量为8)
注意:同步和异步的说法是相对于IO操作来说的。
同步
在代码执行IO操作的时候,必须等待IO操作完成之后,才返回的调用方式。
如:线程的同步(即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作, 其他线程才能对该内存地址进行操作,而其他线程又处于等待状态)
异步
代码在执行IO操作的时候,不必等到IO操作完成就返回的调用方式
阻塞
在函数调用的时候,当前线程被挂起来。
非阻塞
调用函数的时候,当前的线程不会被挂起,而是立即返回。
注意:同步和异步实际上是消息通信的一种机制。我们在调用操作的时候,相当于是发一个消息给另外一个线程。后者说另外一个协程,让其执行某些操作,提交出去之后立马得到一个future,后期就可以通过这个future拿到调用的一些状态和结果。所以说实际上是消息通信之间的一种机制。而阻塞和非阻塞是一种函数调用的机制。