zoukankan      html  css  js  c++  java
  • 四种常用IO模型

    1) 同步阻塞IO(Blocking IO)
    2) 同步非阻塞IO(Non-blocking IO)
    3) IO多路复用(IO Multiplexing)
    4) 异步IO(Asynchronous IO)

    注意以下概念:

    1.同步/异步

    同步和异步是相对的
    同步 前后两件任务, 有严格的顺序一致性(依赖和递进), 按顺序执行, 执行完一个再执行下一个, 需要等待、协调运行
    异步 对顺序的要求和依赖关系没那么强, 表现出来就是两个任务可以分给两个人做, 在等待任务A结束时(同步点前)可以进行任务B
    多线程就是实现异步的一个方式, 它把"第二件任务"交给其他的线程去做了. 硬件的DMA也是异步.

    在实际编程中, 同步和异步区分了请求与响应的交互中, 获取响应的方式
    同步: 请求某种结果, 响应返回所需结果
    异步: 请求'给我结果', 第一次响应回答'我知道了', 第二次响应通知请求线程'已完成' (通过状态通知或调用请求者注册的回调函数等方式)

    2.阻塞/非阻塞

    阻塞和非阻塞也是相对概念
    阻塞   : 请求-响应比较耗时, 如IO操作
    非阻塞: 请求-响应比较迅速, 如没有等待IO完成就直接返回状态值
    socket的非阻塞IO需要设置为NONBLOCK

  • 相关阅读:
    jmeter接口测试1-参数化
    关于python线程池threadpool
    scrapy---setting的字段含义
    urlparse 用法
    scrapy(1)win安装
    sublime
    python函数可变参数*args和**kwargs区别
    webservice接口测试wsdl
    charles使用
    K:栈相关的算法
  • 原文地址:https://www.cnblogs.com/ktao/p/7570734.html
Copyright © 2011-2022 走看看