操作系统——同步异步、阻塞非阻塞
同步与异步对立、阻塞于非阻塞对立,两两可组合。
同步:自己每隔一段时间,以轮询的方式看看请求是否完成; 异步:当任务完成,对方以某种方式通知自己; 阻塞:在等待请求结果的过程中,不能做其他事情; 非阻塞:在等待请求结果的过程中,可以做其他事情。
异步优化了用户体验,非阻塞使得系统开销远远小于阻塞模式,因为系统不需要创建新的进程(or线程),大大节省了系统的资源,多出来的系统资源可以给其他的中间件。
1、同步阻塞(BIO) :客户端发送请求给服务端,此时服务端处理任务时间很久,则客户端被服务端堵塞,所以客户端会一直等待服务端的响应,此时客户端不能做其他任何事,服务端也不会接受其他客户端的请求。
效率不高
2、同步非阻塞(NIO):客户端发送请求给服务端,此时服务端处理任务时间很久,这个期间客户端会一直等待响应,但是服务端可以处理其他的请求,过一会回来处理原先的。
比较高效,一个服务端可以处理很多请求,不会因为一个任务没有处理完而堵着,所以是非阻塞的。
3、异步阻塞:客户端发送请求给服务端,此时服务端处理任务时间很久,这个期间,客户端不会等待服务器响应,它可以做其他的任务,等服务器处理完毕后再把结果响应给客户端,客户端得到回调后再处理服务端的响应。
可避免客户端一直处于等待状态,优化用户体验,类似网页发起的ajax异步请求
4、异步非阻塞(AIO):客户端发送请求给服务端,此时服务端处理任务时间很久,这个期间,客户端可以做其他任务,因为是异步的,可以在回调函数里处理响应;同时服务端是非阻塞,服务端可以去处理其他的任务。
高效
|