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

一、什么是异步编程

我们以一种通俗易懂的方式来说说啥是同步、啥是异步;相信看完就不会再有疑惑了。

1、同步阻塞

同步阻塞 有一天你饿了,想吃饭,但是你不会做,这时候你就跟你妈说:妈,我饿了,我要吃饭。然后你妈就去厨房做饭,你就在外面等着饭做好,啥也不干,这就是同步阻塞。(调用方阻塞不能干其他的事

2、同步非阻塞

同步非阻塞 同样,有一天你饿了,想吃饭,但是你不会做,这时候你就跟你妈说:妈,我饿了,我要吃饭。然后你妈就去厨房做饭,然后你就去看电视了,每隔一会儿问你妈,饭做好了吗。这就是同步非阻塞。(调用方不会阻塞,会一直不断轮询,去查询状态

3、异步方式1

异步方式1 同样,有一天你饿了,想吃饭,但是你不会做,这时候你就跟你妈说:妈,我饿了,我要吃饭。然后你妈就去厨房做饭,然后你就去看电视了。你妈做好饭就给你说,宝,饭做好了,去厨房把饭端到餐桌上。(调用方啥也不管,等好了自己去拿结果

4、异步方式2

异步方式2 同样,有一天你饿了,想吃饭,但是你不会做,这时候你就跟你妈说:妈,我饿了,我要吃饭。然后你妈就去厨房做饭,然后你就去看电视了。你妈做好饭就给你说,宝,饭做好了、快来吃,你直接去餐桌上吃饭就是了。(调用方啥也不管,结果已经放好了,直接去看结果就可以了

异步方式2肯定是比异步方式1更好,但是Linux内核不支持,只能使用异步方式1,需要自己去拿结果。

最后要说一点:只有同步才有阻塞和非阻塞,异步都是非阻塞,你想想,异步咋阻塞。

猜你喜欢

转载自juejin.im/post/7049687095681482759