同步,异步,阻塞与非阻塞

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xyz_dream/article/details/81535590

      借鉴原文: https://www.jianshu.com/p/aed6067eeac9

 

     文中说到最重要的一点就是作者很明确地对同步与异步,阻塞与非阻塞做了详细并且通俗,一语点破两者的关系,瞬间茅塞顿开。

同步与异步(大白话说):

  首先来解释同步和异步的概念,这两个概念与消息的通知机制有关。也就是同步与异步主要是从消息通知机制角度来说的。

      同步:   先执行什么得到结果之后才能继续执行下一步操作。去银行办理业务,排队。前面办理的人没办完,你就不能办理业务。

      异步:   我用银行排队机拿小号排队,不需要在那里站着等了。等到我的时候,广播通知说007号用户请前来办理业务,此时你过去办理即可,没必要跟那么多人挤在一起。

 

阻塞与非阻塞:

  阻塞和非阻塞这两个概念与程序(线程)等待消息通知(无所谓同步或者异步)时的状态有关。也就是说阻塞与非阻塞主要是程序(线程)等待消息通知时的状态角度来说的。

     阻塞:   我只能一直竖着耳朵听是不是到我了办理业务了。其它事情不能做,要专心致志。

     非阻塞:  太坑爹了。上银行拿号排队还不能让我玩手机了?那可不行。   我随便干啥,叫到我的时候我来办理业务就可以了。

 

效率对比:

     1.同步阻塞

          排着一长串的队伍,还得站并且专心致志注意到我了吗?  (效率低下,试想这样会不会是傻子。。。)

     2. 同步非阻塞

          一遍站着排队一遍玩手机,眼睛瞟一下手机又抬头看到我了没有? (这个更累,两种任务来回切换,效率低下) 

     3.异步阻塞

         拿着小票,在银行大厅的座位上休息,不能动弹。就在做一件事,那就是广播喊我了吗?

     4.异步非阻塞

        拿着小票,跷二郎腿,拿手机炒股票,玩游戏。广播叫到007过来办理业务,屁颠地过去办理业务。游戏也玩得爽了,同时又能办理业务了。

以上仅仅只是场景的一种描述,用来打比方。不要有杠精去转牛角尖,那你就学不会什么东西了。

  

 

展开阅读全文

没有更多推荐了,返回首页