异步与同步关注的是信息接收方的行为。
所谓同步,就是在调用一个函数后,直到计算获得函数结果,该函数才执行完毕。
比方说cld来到菜市场买烤鸡。烤鸡要现杀现烤,cld需要等烤鸡做好拿走,买烤鸡这件事才算完成。
所谓异步,就是在调用一个函数后,该函数立刻执行完毕,函数结果计算完成后,该函数会主动通知调用者。
比方说cld来到菜市场买烤鸡。烤鸡要现杀现烤,cld说"老板我要赶紧回家陪我男朋友。我给你留个地址,你做好送到我家好吗"。然后cld就回家了。尽管烤鸡还没做好,但cld已经完成了买烤鸡这件事。而烤鸡会由老板稍后送到家里来。
再举两个例子。
函数的异步调用
函数的同步调用
阻塞/非阻塞关注的是信息发送方的状态。
阻塞是指得到结果之前,当前线程会被挂起。
比方说cld来到菜市场买烤鸡。在得到烤鸡(无论是否让老板把烤鸡送到家里)之前,cld什么事情都不做,就直到获得烤鸡才做其他事情。(好像不太像cld的性格...)
非阻塞指在得到结果之前,当前线程不会挂起。