同步异步&阻塞非阻塞

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mada26/article/details/74296210

同步异步(关注的是消息通信机制

同步:调用者发出一个"调用"没得到结果之前,该"调用"不返回;一旦该"调用"返回,就得到结果调用者主动等待"调用"的结果。

异步:调用者发出"调用"后,就立即返回,没有返回结果。当一个异步过程"调用"发出后,调用者不会立刻得到结果,而是在"调用"发出以后,由被调用者通过状态,通知来通知调用者,或者通过回调函数来处理这个"调用"。类似的框架有Node.js等。

对比:同步是做完一件事再做另一件事。而异步是同时做很多事情,某个事情有结果了再去处理(又一个新事情)


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

阻塞"调用":指的是"调用"结果返回之前,当前线程会被挂起,调用线程只有在得到结果之后才会返回。

非阻塞调用:指不能立刻得到返回结果之前,该"调用"不会阻塞当前线程。

对比:阻塞是等不到想要的结果就不走了。而非阻塞是有结果就带走,没有结果就空手而归。


Example:

水壶是被调用者,人是调用者。

同步&异步:普通水壶(同步):人等水开。响水壶(异步):水烧开了会发出响声提示人。

阻塞&非阻塞:人坐着等水开,水开了才能去做别的事情(阻塞)。人去玩等水开(非阻塞)。

通常:异步配合非阻塞,效率会高。


参考知乎的一篇文章:怎样理解阻塞非阻塞与同步异步


猜你喜欢

转载自blog.csdn.net/mada26/article/details/74296210