zoukankan      html  css  js  c++  java
  • 同步和异步,阻塞和非阻塞

     可以这么理解。阻塞和非阻塞,应该描述的是一种状态,同步与非同步描述的是行为方式。
     
    1、同步和异步
      同步和异步关注的消息通信机制
      1、同步:就是在发出一个调用时,在没有得到结果之前,该调用就不返回。但是一旦调用返回,就得到返回值了。 
      2、异步:调用在发出之后,这个调用就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发出后,调用者不会立刻得到结果。而是在调用发出后,被调用者通过状态、通知来通知调用者,或通过回调函数处理这个调用。
     
    2、阻塞和非阻塞
      阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态
      1、阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。
      2、非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。
     
    3、关于同步阻塞  同步非阻塞  异步阻塞  异步非阻塞   网上有一个很好的例子,解释的很清楚
     

        老张爱喝茶,废话不说,煮开水。
        出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。
        1、 老张把水壶放到火上,立等水开。(同步阻塞)
            老张觉得自己有点傻
        2、 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)
          老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~的噪音。
        3 、老张把响水壶放到火上,立等水开。(异步阻塞)
          老张觉得这样傻等意义不大
        4、 老张把响水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去拿壶。(异步非阻塞)
          老张觉得自己聪明了。


          所谓同步异步 是你获得水开了的方式不同。
          同步就是烧开水,要自己来看开没开;

          异步就是水开了,然后水壶响了通知你水开了。
          

          所谓阻塞非阻塞,说的是你得到结果之前能不能干其他事情。
          阻塞是烧开水的过程中,你不能干其他事情(即你被阻塞住了);

          非阻塞是烧开水的过程里可以干其他事情。

              
  • 相关阅读:
    【POJ 1958】 Strange Towers of Hanoi
    【HNOI 2003】 激光炸弹
    【POJ 3263】 Tallest Cow
    【POJ 2689】 Prime Distance
    【POJ 2777】 Count Color
    【POJ 1995】 Raising Modulo Numbers
    【POJ 1845】 Sumdiv
    6月16日省中集训题解
    【TJOI 2018】数学计算
    【POJ 1275】 Cashier Employment
  • 原文地址:https://www.cnblogs.com/shun-gege/p/7923134.html
Copyright © 2011-2022 走看看