同步、异步指的是通信双方约定被调用方如何返回的机制,是在本次会话中返回结果,还是在另外一个会话中返回。
阻塞、非阻塞指的是调用方是否在被调用方未返回结果的过程中一直等待该结果而不去处理其他事情。
实际例子:
- 同步阻塞:调用方调用被调用方获取结果,被调用方一直计算结果,直到结果出来才会返回结果到调用方,而调用方此时整个进程都会阻塞在这里等待这个结果返回。
- 同步非阻塞:调用方调用被调用方获取结果,被调用方一直计算结果,直到结果出来才会返回结果到调用方,而调用方此时可能在多线程处理其他事务。
- 异步阻塞:调用方调用被调用方获取结果,被调用方立即返回,并将结果回调地址携带在返回结果中,而调用方即使得到了立即返回,但是直到被调用方结果计算出来放到回调地址中为止它都是整个进程阻塞在这里,不处理其他事务
- 异步非阻塞:调用方调用被调用方获取结果,被调用方立即返回,并将结果回调地址携带在返回结果中,而调用方获取到返回之后就去做其他事情了。
总的来说,同步、非同步主要是描述被调用方如何返回的行为,阻塞、非阻塞主要描述的是调用方如何调用的行为。