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

同步是什么?

所谓同步,就是在发出一个调用时,在没有得到结果之前,该调用就不返回。但是一旦调用返回,就得到返回值了。

注意此处,同步不一定是阻塞的,比如调用时检查调用条件不成立,于是调用者继续做别的事情,过一会儿再来调用,此处就是非阻塞的,但是在成功调用那次,它依然是同步的
我理解为,同步就是调用就地得到结果
就好像我去饭店点了饭,点完了我可以去买饮料,买完再问饭店老板,饭做好了没有,好了我就付钱拿走,没有再去买包烟,买完再回来问,直到老板做好饭为止

异步是什么?

异步则是相反,调用在发出之后,这个调用就直接返回了,所以没有返回结果。

换句话说,当一个异步过程调用发出后,调用者不会立刻得到结果。而是在调用发出后,被调用者通过状态、通知来通知调用者,或通过回调函数处理这个调用
我理解为调用没有马上得到结果,而在别处等待结果的返回
就好像你打电话订了外卖(调用),老板把外卖送过来。

同步和异步是一种消息机制

阻塞是什么?

阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。

非阻塞是什么?

非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。

阻塞和非阻塞时一种过程状态

参考:知乎萧萧的答案

posted @ 2020-04-10 20:12  J6`  阅读(173)  评论(0编辑  收藏  举报