同步、异步与阻塞、非阻塞的区别



        一直都以为同步是阻塞,异步是非阻塞,今天才知道这个结论是大错特错,看了很多例子,自己也来进行类比解释一下,个人理解,若有误,请纠正,谢谢。

        同步与异步的区别主要在于被调用者如何去回应调用者。用官话说就是消息通信机制的不同。

        举个例子:

            你去找一个朋友借东西,去到朋友家,朋友告诉你东西被雪藏了,可能要找很久,所以你也许会有以下两种方式获得书。第一种:你在朋友家等了很久,等他找到拿给你。第二种,你先回家,他如果找到了就寄快递给你。

          第一种是同步的方式,你是调用者,朋友是被调用者,调用者主动等待响应。

          第二种是异步的方式,由被调用者去告诉你东西找到了。

          阻塞和非阻塞区别在于在你做一件事的时候,你能不能去做别的事。至于这件事如何做的,你又如何知道这件事做完了的,与它没有什么关系。

          同一个例子:

          同步非阻塞:

    你在朋友家等了很久,在等的过程中,你无聊就在那里敲代码,时不时主动去问找到了没。

          同步阻塞:

    你在朋友家等了很久,什么事都没干,一直等到朋友把东西找到。

          异步非阻塞:

    你先回家,吃饭睡觉打豆豆。等到朋友找到了自己寄给你。

         异步阻塞:

    你先回家,啥事都不干,就等朋友找到了寄给你。(真的是这样?似不似傻?)

    所以由此看来,同步异步与阻塞非阻塞是不同的。

你可能感兴趣的:(同步、异步与阻塞、非阻塞的区别)