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

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

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


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

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

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

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

              
  • 相关阅读:
    初识ES5、ES6
    WEB前端性能优化之三——JavaScript优化
    Web前端浏览器兼容问题
    HTML5新特性
    WEB前端性能优化之二——css优化
    WEB前端性能优化之一——网页级优化
    CSS的一些案例和坑
    bootstrap插件--select2.js--一个基于jQuery的替换框
    boostrap插件---typeahead.js---输入提示下拉菜单
    border-radius:50%,在安卓上存在兼容问题
  • 原文地址:https://www.cnblogs.com/shun-gege/p/7923134.html
Copyright © 2011-2022 走看看