IO多路复用
定义:同时监控多个IO事件,当哪个IO事件准备就绪就执行哪个IO事件。
以此形成可以同时操作多个IO的并发行为,从而避免一个IO阻塞,造成所有IO都无法执行
IO事件准备就绪:是一种IO必然要发生的临界状态。
IO多路复用的编程实现
1.将IO设置为关注IO(注册IO)
2.将关注IO提交给内核监测
3.处理内核给我们反馈的准备就绪的IO
具体实现方案: 3种
1.select ----->windows linux unix(苹果内核)
2.poll ----->linux unix
3.epoll ----->linux unix
三种方法在select 模块中
import select
select(rlist, wlist, xlist[, timeout]) ----> (rlist, wlist, xlist)三个返回值
rs,ws,xs=select(rlist, wlist, xlist[, timeout])四个参数三个返回值
功能:用来监控IO事件,阻塞等待IO事件发生
参数:rlist 列表 存放我们监控等待处理的IO事件(不受自己控制的)
wlist 列表 存放我们要主动操作的IO事件
xlist 列表 我们要关注出错处理的IO事件
timeout 超时时间,超过一定时间则不阻塞
返回值: rs 列表 rlist 中准备就绪的IO
ws 列表 wlist 中准备就绪的IO
xs 列表 xlist 中准备就绪的IO
注意: 1.wlist中如果有IO事件则select立即会返回为ws
2.在处理IO过程中不要处理一个客户端长期占有服务端使服