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

    同步与异步

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

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

    核心在消息通信机制

    一个典型的例子,异步IO

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

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

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

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

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

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

    阻塞与非阻塞

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

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

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

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

  • 相关阅读:
    SQL Server 创建触发器(trigger)
    jQuery插件-json2.js
    Opengl创建机器人手臂代码示例
    OpenGL超级宝典完整源码(第五版)
    基于Opengl的太阳系动画实现
    Opengl创建几何实体——四棱锥和立方体
    ubuntu16.04安装labelme
    Visual Studio Command Prompt 工具配置方法
    OpenNi安装示例
    Opencv读取图片像素值并保存为txt文件
  • 原文地址:https://www.cnblogs.com/geeklove01/p/8157906.html
Copyright © 2011-2022 走看看