并发、并行、同步、异步、阻塞、非阻塞相关概念

并发

  在一个时间段内,有几个程序在同一个cpu上面运行,但是任意时刻只有一个程序在cup上运行。(一个cpu在一个时间点上只能运行一个程序,因为cpu的运算速度非常快,可达上亿次每秒,如在一秒内可以切换100个进程时,但是因为我们感觉不出cpu的切换,所以错觉是几个程序在同时运行的)

并行

  指的是在任意时刻上,有多个程序运行在不同的cpu上。(如8个cpu的计算机,每个cpu上同一个时刻,有一个程序运行的时候,那么可以成并行数量为8)

注意:同步和异步的说法是相对于IO操作来说的。

同步

  在代码执行IO操作的时候,必须等待IO操作完成之后,才返回的调用方式。

如:线程的同步(即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作, 其他线程才能对该内存地址进行操作,而其他线程又处于等待状态)

异步

  代码在执行IO操作的时候,不必等到IO操作完成就返回的调用方式

阻塞

  在函数调用的时候,当前线程被挂起来。

非阻塞

  调用函数的时候,当前的线程不会被挂起,而是立即返回。

注意:同步和异步实际上是消息通信的一种机制。我们在调用操作的时候,相当于是发一个消息给另外一个线程。后者说另外一个协程,让其执行某些操作,提交出去之后立马得到一个future,后期就可以通过这个future拿到调用的一些状态和结果。所以说实际上是消息通信之间的一种机制。而阻塞和非阻塞是一种函数调用的机制。

原文地址:https://www.cnblogs.com/yc3110/p/10632326.html