阻塞、非阻塞、同步、异步
同步是什么?
所谓同步,就是在发出一个调用时,在没有得到结果之前,该调用就不返回。但是一旦调用返回,就得到返回值了。
注意此处,同步不一定是阻塞的,比如调用时检查调用条件不成立,于是调用者继续做别的事情,过一会儿再来调用,此处就是非阻塞的,但是在成功调用那次,它依然是同步的
我理解为,同步就是调用就地得到结果
就好像我去饭店点了饭,点完了我可以去买饮料,买完再问饭店老板,饭做好了没有,好了我就付钱拿走,没有再去买包烟,买完再回来问,直到老板做好饭为止
异步是什么?
异步则是相反,调用在发出之后,这个调用就直接返回了,所以没有返回结果。
换句话说,当一个异步过程调用发出后,调用者不会立刻得到结果。而是在调用发出后,被调用者通过状态、通知来通知调用者,或通过回调函数处理这个调用
我理解为调用没有马上得到结果,而在别处等待结果的返回
就好像你打电话订了外卖(调用),老板把外卖送过来。
同步和异步是一种消息机制
阻塞是什么?
阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。
非阻塞是什么?
非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。
阻塞和非阻塞时一种过程状态