个人理解:
首先涉及两个对象:调用方 和 被调用方。
阻塞非阻塞是指调用方的态度;
同步异步是被调用方的特征;
从大的概念上来讲同步和异步关注的是消息通信机制,阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态.
比如程序(调用方)调用某个函数A(被调用方):
- 针对A函数,若A函数必须要执行完才返回,则是同步调用;若A立刻返回,后面得到具体结果后在通知程序,则是异步调用。
- 针对调用方(进程/线程):若在调用A后,啥也不干,一直阻塞,等着A返回,则是阻塞方式;若调用A后,不阻塞在这里,去做其他的事儿,时不时check下A是否返回结果,则属于非阻塞状态。
参考:怎样理解阻塞非阻塞与同步异步的区别?(里面很多回答也是错的,可能我这篇博客写的东西也是错的,先记录下吧,以后有权威的解释了再来更改)