zoukankan      html  css  js  c++  java
  • IO多路复用的作用?

    I/O多路复用实际上就是用select, poll, epoll监听多个io对象,当io对象有变化(有数据)的时候就通知用户进程。好处就是单个进程可以处理多个socket。当然具体区别我们后面再讨论,现在先来看下I/O多路复用的流程:

    1.阻塞I/O模型
    老李去火车站买票,排队三天买到一张退票。
    耗费:在车站吃喝拉撒睡 3天,其他事一件没干。

    2.非阻塞I/O模型
    老李去火车站买票,隔12小时去火车站问有没有退票,三天后买到一张票。耗费:往返车站6次,路上6小时,其他时间做了好多事。

    3.I/O复用模型
    1.select/poll
    老李去火车站买票,委托黄牛,然后每隔6小时电话黄牛询问,黄牛三天内买到票,然后老李去火车站交钱领票。
    耗费:打电话
    2.epoll
    老李去火车站买票,委托黄牛,黄牛买到后即通知老李去领,然后老李去火车站交钱领票。
    耗费:无需打电话

    4.信号驱动I/O模型
    老李去火车站买票,给售票员留下电话,有票后,售票员电话通知老李,然后老李去火车站交钱领票。
    耗费:无需打电话

    5.异步I/O模型
    老李去火车站买票,给售票员留下电话,有票后,售票员电话通知老李并快递送票上门。
    耗费:无需打电话

    1. I/O多路复用

    1.1 它的形成原因

    如果一个I/O流进来,我们就开启一个进程处理这个I/O流。那么假设现在有一百万个I/O流进来,

    那我们就需要开启一百万个进程一一对应处理这些I/O流(——这就是传统意义下的多进程并发处理)。思考一下,一百万个进程,你的CPU占有率会多高,这个实现方式及其的不合理。所以人们提出了I/O多路复用这个模型,一个线程,通过记录I/O流的状态来同时管理多个I/O,可以提高服务器的吞吐能力

    参考链接:

    https://www.jianshu.com/p/6a6845464770

  • 相关阅读:
    l2tp ubuntu
    my emacs fav config
    2048小游戏源码(vue自定义指令使用)
    Vue 脚手架新建项目
    vue中修改router定义的name值
    只能输入金额格式的input
    前端开发中UI问题处理
    form表单提交Ajax请求后不跳转
    小程序中代替v-html用法
    小程序中分页加载问题
  • 原文地址:https://www.cnblogs.com/Rivend/p/12047386.html
Copyright © 2011-2022 走看看