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

    同步与异步

    同步:发出一个调用,若没有得到结果,则调用不返回;若调用返回,那么一定得到结果了

    异步:发出一个调用,立即返回,没有返回结果。当被调用者有结果了,再通过状态、通知来告诉调用者来获取结果

    核心在消息通信机制

    一个典型的例子,异步IO

    将调用者视作主线程,通常情况下,主线程中会实现一个消息循环

    消息循环的作用是读取消息-处理消息

    读取的消息取自消息队列,所谓的消息队列,就是将当我们的操作(点击鼠标,键盘等)视作消息,多个消息组成的队列叫做消息队列。

    这样,发出一个IO请求R1之后,从主线程这一边来看,就相当于消息队列里多了一个消息。

    主线程读取R1之后,再创建一个线程T1来处理R1,但不等待处理结果,而是立即返回到主线程,继续处理请求R2,R3....

    等T1处理R1完毕,再通知主线程获取处理结果

    阻塞与非阻塞

    阻塞:在被调用者返回结果之前,调用者挂起。调用者在得到结果之后再返回。

    非阻塞:在被调用者返回结果之前,调用者不会被阻塞。

    关注的是调用者在等待被调用者返回结果时的状态

    注:以上叙述中,“结果”指的是被调用者返回的值,调用者,被调用者都可当作线程来理解。

  • 相关阅读:
    模拟循环单击事件实现layout中间panel全屏
    easyui tree自定义属性用法
    jquery给动态添加的dom元素绑定事件
    基于easyui fom分组插件
    ubuntu adb 安装
    vim状态保存跟恢复
    ubuntu-删除内核
    u盘安装14.04ubuntu系统
    findFocus-获得拥有焦点的控件
    xml中控件调用构造方法
  • 原文地址:https://www.cnblogs.com/geeklove01/p/8157906.html
Copyright © 2011-2022 走看看