zoukankan      html  css  js  c++  java
  • IO模型简介

    IO模型简介

    """
    我们这里研究的IO模型都是针对网络IO的
    Stevens在文章中一共比较了五种IO Model:
      * blocking IO           阻塞IO
      * nonblocking IO     非阻塞IO
      * IO multiplexing     IO多路复用
      * signal driven IO     信号驱动IO
      * asynchronous IO   异步IO
      由signal driven IO(信号驱动IO)在实际中并不常用,所以主要介绍其余四种IO Model。
    """
    #1)等待数据准备 (Waiting for the data to be ready)
    #2)将数据从内核拷贝到进程中(Copying the data from the kernel to the process)

    同步异步
    阻塞非阻塞
    常见的网络阻塞状态:
    accept
       recv
       recvfrom
       
       send虽然它也有io行为 但是不在我们的考虑范围

    阻塞IO模型

    # 在服务端开设多进程或者多线程 进程池线程池 其实还是没有解决IO问题
    该等的地方还是得等 没有规避
    只不过多个人等待的彼此互不干扰

    非阻塞IO

    """
    虽然非阻塞IO给你的感觉非常的牛逼
    但是该模型会 长时间占用着CPU并且不干活 让CPU不停的空转
    我们实际应用中也不会考虑使用非阻塞IO模型

    任何的技术点都有它存在的意义
    实际应用或者是思想借鉴
    """

    IO多路复用

    """
    监管机制其实有很多
    select机制 windows linux都有

    poll机制 只在linux有 poll和select都可以监管多个对象 但是poll监管的数量更多

    上述select和poll机制其实都不是很完美 当监管的对象特别多的时候
    可能会出现 极其大的延时响应

    epoll机制 只在linux有
    它给每一个监管对象都绑定一个回调机制
    一旦有响应 回调机制立刻发起提醒

    针对不同的操作系统还需要考虑不同检测机制 书写代码太多繁琐
    有一个人能够根据你跑的平台的不同自动帮你选择对应的监管机制
    selectors模块
    """

    异步IO

    """
    异步IO模型是所有模型中效率最高的 也是使用最广泛的
    相关的模块和框架
    模块:asyncio模块
    异步框架:sanic tronado twisted
    速度快!!!
    """

     

  • 相关阅读:
    超大文件排序
    透彻理解迪杰斯特拉算法
    Floyd-傻子也能看懂的弗洛伊德算法(转)
    轻松实现在浏览器上播放本地视频
    Caffeine缓存处理
    每日日报94
    每日日报93
    下载安装SQL server2008的步骤
    每日日报92
    每日日报91
  • 原文地址:https://www.cnblogs.com/mayrain/p/12797416.html
Copyright © 2011-2022 走看看