zoukankan      html  css  js  c++  java
  • 一个例子让你清楚的理解同步,异步,阻塞,非阻塞

    同步阻塞、同步非阻塞、异步阻塞、异步非阻塞

    出场人物:小明,水壶2个(普通水壶,简称水壶;会响的水壶,简称响水壶)

    1.小明把水壶放到火上,然后在那傻等水开。(同步阻塞)

    小明觉得自己有点傻。。。。。。

    2.小明把水壶放到火上,然后去客厅看电视,时不时的去厨房看看水开没有。(同步非阻塞)

    小明还是觉得自己有点傻,于是变高端了,买了一个水烧开了会响的水壶。水开之后能大声的发出响声提示人水开了。。。

    3.小明把响水壶放到火上,然后在那傻等水开。(异步阻塞)

    小明觉得傻等没有意义,不应该傻等。。。

    4.小明把响水水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去处理。(异步非阻塞)

    小明觉得自己聪明了。。。完。。。

      所谓同步异步,只是对于水壶而言。普通水壶,同步;响水壶,异步。虽然都能干活,但响水壶可以在自己完工之后,提示小明水开了。这是普通水壶所不能及的。同步只能让调用者去轮询自己(情况2中) , 造成小明效率的低下。
      所谓阻塞非阻塞,仅仅对于小明而言。立等(傻等)的小明,阻塞;看电视的小明,非阻塞。情况1和情况3中小明就是阻塞的,有人喊他都不知道。虽然3中响水壶是异步的,可对于立等的小明没有太大的意义。所以一般异步是配合非阻塞使用的,这样才能发挥异步的效用。

       

      我们可以分组对比着理解记忆:

        同步异步:同步是指一个时间点只能有一个程序在占用CPU,而异步是指可以有多个程序并行(可以很好的利用操作系统的多核)

        阻塞非阻塞:阻塞是指操作系统发出一个调用/操作之后,必须等到此调用返回结果后才返回。而非阻塞是指在操作系统发出一个调用/操作后,不用等到执行完毕得到结果才返回,而是立即返回,然后可以执行其他的调用/操作(例如:在遇到比较耗时的IO操作时,无需等待此IO操作完成再返回)。

  • 相关阅读:
    ActiveSync合作关系对话框的配置
    WINCE对象存储区(object store)
    Wince 隐藏TASKBAR的方法
    Wince输入法换肤换语言机制
    poj 3080 Blue Jeans 解题报告
    codeforces A. Vasily the Bear and Triangle 解题报告
    hdu 1050 Moving Tables 解题报告
    hdu 1113 Word Amalgamation 解题报告
    codeforces A. IQ Test 解题报告
    poj 1007 DNA Sorting 解题报告
  • 原文地址:https://www.cnblogs.com/aberwang/p/9404139.html
Copyright © 2011-2022 走看看