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流进来,