请求方式分为同步、异步,每个又可以分为阻塞与非阻塞
同步异步是针对调用者来说的,调用者发起一个请求后,一直干等被调用者的反馈就是同步,不必等去做别的事就是异步。
阻塞非阻塞是针对被调用者来说的,被调用者收到一个请求后,做完请求任务后才给出反馈就是阻塞,收到请求直接给出反馈再去做任务就是非阻塞
同步阻塞:
调用方一直等待接收请求的方返回结果、例如小明一直盯着下载进度条,到 100% 的时候就完成。
- 同步体现在:等待下载完成通知
- 阻塞体现在:等待下载完成通知过程中不能做其他任务处理
同步非阻塞:
调用方等待接收请求的方返回结果的过程中可以干别的事情,期间不断不查看是否有返回结果。例如小明提交下载任务后就去玩游戏,每过一段时间就去瞄一眼进度条,看到 100% 就完成。
- 同步体现在:等待下载完成通知
- 非阻塞体现在:等待下载完成通知过程中去干别的任务了,只是时不时会瞄一眼进度条。【必须要在两个任务间切换,关注下载进度】
异步阻塞:
调用方发送请求后将等待程序最小化,且在接收请求方返回结果的前什么也不干
例如小明换了个有下载完成通知功能的软件,下载完成就“叮”一声。不过小明不看进度条也不做别的事,只是一直等待“叮”的声音。
- 异步体现在:有下载完成通知
- 阻塞体现在:等待下载完成通知过程中,不能做其他任务处理
异步非阻塞:
调用方将消息发送后不再关心是否返回结果,可以处理其他事情,接收请求方处理完请求后再将结果返回给调用方,例如小明提交下载任务后就去玩游戏,听到“叮”的一声就知道完成了。
- 异步体现在:有下载完成通知
- 非阻塞体现在:等待下载完成通知过程中,去干别的任务了
通信机制 | |||
---|---|---|---|
同步 | 异步 | ||
调用状态 | 阻塞 | 同步阻塞 | 异步阻塞 |
非阻塞 | 同步非阻塞 | 异步非阻塞 |
关系表格