1,阻塞和非阻塞
阻塞这个动作是操作系统进行的。一般是进行发起了一个系统调用,比如读写磁盘,如果是阻塞调用,进程就会变为阻塞态,等系统调用完成以后,将进程激活为就绪态。如果是非阻塞的调用,进行就不会变为阻塞态,还是在执行态和就绪态之间来回转化。
2,同步和异步
同步和异步是对于调用方和被调用方来说的。 假如A调用了B,如果A接下来的操作不需要B完成以后才能进行,在B完成之前就能够转去做其他的事情, 那么A和B就是异步的关系。 如果A需要等到B操作完成,才能进行接下来其他的工作,那么A和B之间就是同步的关系。
同步的例子很多,在单线程环境下,函数调用都属于同步调用的情况。
异步比如tornado,IOLOOP作为协程的的调度中心,IOLOOP和每个协程的调用都是异步的,因为可能一个协程在运行中遇到的磁盘或者网络IO这种耗时操作,协程就会返回,将控制权交给IOLOOP,去执行回调,检查其它协程的IO状态。