同步:当同步调用发出后,调用者要一直等待返回结果。获得了返回的结果之后才能继续执行
异步:当异步调用发出后直接返回,调用者可以在此时做其他事情而不需要等待返回结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。
阻塞:是指调用结果返回前,当前线程会被挂起,即阻塞。
非阻塞:指即使还没得到调用的返回结果,也不会阻塞当前线程。
在线程通信过程中,阻塞/非阻塞,同步/异步近似同义
在IO系统调用层面,非阻塞IO系统调用和异步IO系统调用有一定的差别,他们都不会阻塞线程,但返回的结果有所差异,但都是非阻塞系统调用
总结
- 同步:调用函数后,只有当收到结果后才会继续向下执行(阻不阻塞不关心)
- 异步:调用函数后,可以立即向下执行,调用结果以通知的方式告知调用者
- 阻塞:调用函数后,没有结果就不会返回,即阻塞在函数调用这一步
- 非阻塞:调用函数后,立即返回(但是这个返回没有带结果),不会阻塞当前现场。