同步与异步
同步与异步机制是描述通信模式的概念。
同步机制
同步机制是指发送方发送请求后,需要等待接收到接收方返回的响应后才继续发送新的请求。在同步机制中,所有的请求都是同步的,接收方和发送方对请求的处理步调是已知的。
异步机制
异步机制是指发送方发送请求后,不需要等待接收方返回的相应,就可以继续发送新的请求。在异步机制中,来自发送方的请求需要队列进行保存,接收方处理完成后发送响应通知发送方。
阻塞与非阻塞
阻塞与非阻塞是描述进程处理调用的方式,实质上也就是一系列的IO操作。
阻塞
阻塞方式是指在调用结果返回前,当前线程从运行状态被挂起,知道调用结果返回后才进入就绪状态,等待CPU调用后继续执行。
非阻塞
非阻塞方式是指不需要等待调用结果返回,在调用结果不能立即返回时,当前线程不会被挂起,而是立即返回,继续执行下一个调用。
组合
将同步、异步以及阻塞、非阻塞这两个不同阶段的处理方式结合在一起,就会产生同步阻塞、同步非阻塞、异步阻塞以及异步非阻塞四种机制。
同步阻塞
发送方向接收方发送请求后,一直等待接收方的响应;同时接收方在处理请求时,若IO操作的结果不能马上返回,就一直等待返回结果,知道获取到返回结果后才响应发送方。在此期间,发送方和接收方均不能进行其他工作。同步阻塞方式的实现比较简单,但效率低下。
同步非阻塞
发送方向接收方发送请求后,一直等待接收方的响应;而接收方在处理请求时,若IO操作的结果不能马上得到,就立即返回,继续去处理其他工作,但是由于未能得到返回结果,因此不响应发送方,使得发送方一直等待,直至IO操作完成,发送方才能收到接收方的响应。
异步阻塞
发送方向接收方发送请求后,不用等待响应,可以继续其他工作;而接收方在处理请求时,若IO操作的结果不能马上返回,就一直等待返回结果,知道获取到返回结果后才响应发送方。
异步非阻塞
发送方向接收方发送请求后,不用等待响应,可以继续其他工作;同时接收方在处理请求时,若IO操作的结果不能马上得到,就立即返回,继续去处理其他工作,当IO操作完成后,将完成结果和完成状态通知接收方,接收方进而再响应发送方。异步非阻塞方式的实现比较复杂,但效率最高。