一直都以为同步是阻塞,异步是非阻塞,今天才知道这个结论是大错特错,看了很多例子,自己也来进行类比解释一下,个人理解,若有误,请纠正,谢谢。
同步与异步的区别主要在于被调用者如何去回应调用者。用官话说就是消息通信机制的不同。
举个例子:
你去找一个朋友借东西,去到朋友家,朋友告诉你东西被雪藏了,可能要找很久,所以你也许会有以下两种方式获得书。第一种:你在朋友家等了很久,等他找到拿给你。第二种,你先回家,他如果找到了就寄快递给你。
第一种是同步的方式,你是调用者,朋友是被调用者,调用者主动等待响应。
第二种是异步的方式,由被调用者去告诉你东西找到了。
阻塞和非阻塞区别在于在你做一件事的时候,你能不能去做别的事。至于这件事如何做的,你又如何知道这件事做完了的,与它没有什么关系。
同一个例子:
同步非阻塞:
你在朋友家等了很久,在等的过程中,你无聊就在那里敲代码,时不时主动去问找到了没。
同步阻塞:
你在朋友家等了很久,什么事都没干,一直等到朋友把东西找到。
异步非阻塞:
你先回家,吃饭睡觉打豆豆。等到朋友找到了自己寄给你。
异步阻塞:
你先回家,啥事都不干,就等朋友找到了寄给你。(真的是这样?似不似傻?)
所以由此看来,同步异步与阻塞非阻塞是不同的。
网友评论