zoukankan      html  css  js  c++  java
  • 并发编程——IO模型(重点)

    1、 内存分为内核缓冲区和用户缓冲区(网络下载的资源,硬盘加载的资源,先放到内核缓冲区----》copy到应用程序的缓冲区,应用程序才能用这个数据)

    2、io模型:
    -阻塞io(BIO)
        ~用户进程从发起请求,到最终拿到数据前,一直挂起等待; 数据会由用户进程完成拷贝
    -非阻塞io(NIO)
        ~用户进程发起请求,如果数据没有准备好,那么立刻告知用户进程未准备好;此时用户进程可选择继续发起请求、或者先去做其他事情,稍后再回来继续发请求,直到被告知数据准备完毕,可以开始接收为止; 数据会由用户进程完成拷贝
    -io多路复用(io多路复用是阻塞式IO,有阻塞的过程就是阻塞式IO) [目前最流行的模型,你所听到的所谓的高并发的模型框架都是用这个模型,比如 ngixn redis ]
    select(windows支持,windows不支持epoll,这也就是官方不提供redis的window版本的原因,windows也扛不住)select支持的文件描述符数量太小了,默认是1024,这个是大小限制,一直在轮询--主动问数据,主动取数据
    poll(windows支持,linux支持)没有大小限制,但还是在轮询---还是要自己要去主动取一下数据去下
    epoll(windows不支持,linux支持)没有大小限制,有回调机制---当有数据时自动爆发出来,数据直接送过来

        ~复用也就是共用的意思
        ~类似BIO,只不过找了一个代理,来挂起等待,并能同时监听多个请求; 数据会由用户进程完成拷贝
        ~java里的NIO(New IO)跟我们所说的NIO(非阻塞IO)不是一个东西
    -异步io:
    -信号驱动io(理论,不在考虑范围内)

    ---40---

  • 相关阅读:
    UVa10917
    T^T online judge 2952
    AcWing 105.七夕祭
    AcWing 99.激光炸弹(二维前缀和)
    AcWing 97.约数之和
    AcWing 95. 费解的开关
    ccf/csp 2018 12 小明放学
    BNUOJ 33535 Final Exam Arrangement
    分块
    sublime安装配置
  • 原文地址:https://www.cnblogs.com/guojieying/p/13572015.html
Copyright © 2011-2022 走看看