阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态,是对客户端说的

同步和异步是通信机制,是对服务端说的

拿餐厅吃饭举例:

同步:

客人(客户端)去餐厅(服务端)吃饭,点了一杯饮料,然后餐厅(服务端)从接受到请求开始,开始制作饮料,然后制作好了,立马交给客人
餐厅做完了给你

异步:

客人(客户端)去餐厅(服务端)吃饭,点了一堆东西,餐厅不能马上给客人,但是会给客人一个号码牌,叫客人去几号桌子上面等,过一段时间之后,餐厅将所有的菜和饮料啥的一起端到你的桌子上。
餐厅先给你一个号码牌,然后制作,做完了再给你(这和消息队列是一样的,把任务放到消息队列里面,告诉客户端你的操作已经成功提交,但是这时候服务端还没执行完毕,只是先告诉你)

阻塞:

阻塞和非阻塞就是对客户端,也就是调用发起方来说,我一直站着柜台这里等,等我的饮料,等我的菜(如果,服务端也就是餐厅能马上提供客户要的东西,阻塞是非常有价值的,但是如果时间要很久,干等就很傻)

非阻塞:

非阻塞就是,哇,等的时间太长了,我去那个椅子上面坐一下,打把游戏,等他弄好了,我再去接我的美食。

然后就有下面这张表

通信机制

通信机制

同步

异步

调用状态

阻塞

同步阻塞

异步阻塞

调用状态

非阻塞

同步非阻塞

异步非阻塞

References: