同步和异步、阻塞和非阻塞

2019-07-11  本文已影响0人  小明今晚加班
同步和异步.png

关于同步和异步

同步和异步其实指:请求发起方对消息结果的获取是主动发起的,还是被动通知的。如果请求方对结果的获取是发主动发起的,一直在等待应答结果(同步阻塞),或者可以先去处理其他事情,但要不断轮询查看发起的请求是否有应答结果(同步非阻塞),因为不管如何都要发起方主动获取消息结果,所以形式上还是同步操作。如果请求结果的获取是由服务方通知的,也就是说请求方发出请求后,要么一直等待通知(异步阻塞),要么就先去干自己的事儿(异步非阻塞),当事情处理完成后,服务方会主动通知请求方,它的请求已经完成,这就是异步。

阻塞和非阻塞

阻塞和非阻塞在计算机世界里面,通常指的是针对IO操作,如网络IO和磁盘IO等。那么什么是阻塞和非阻塞呢?简单的说就是我们调用了一个函数后,在等待这个函数的返回结果之前,当前的线程是出于挂起状态?还是运行状态?如果是挂起状态,就意味着当前线程什么都不能干,就等着获取结果,这就叫同步阻塞;如果仍然是运行状态,就意味着当前线程是可以处理其他任务,但要时不时的去看是否有结果,这就是同步非阻塞。

实际生活场景

同步、异步、阻塞和非阻塞,会组合成上面提到过的四种结果:

总结:同步和异步就看请求方对请求结果的获取是主动发起的,还是服务方通知的。而阻塞和非阻塞通常是指客户端在发出请求后,在服务端处理这个请求的过程中,客户端本身是否直接挂起等待结果,还是继续做其他的任务。

上一篇 下一篇

猜你喜欢

热点阅读