I/O多路复用、select poll epoll、协程

多路 I/O 复用模型是利用select、poll、epoll可以同时监察多个流的 I/O 事件的能力,在空闲的时候,会把当前线程阻塞掉,当有一个或多个流有I/O事件时,就从阻塞态中唤醒,于是程序就会轮询一遍所有的流(epoll是只轮询那些真正发出了事件的流),并且只依次顺序的处理就绪的流,这种做法就避免了大量的无用操作。

 

select    列表循环,效率低
poll        可接收得列表数据多,效率也不高
epoll      效率最高得 异步操作+回调函数
  windows 不支持
  linux 支持
selectors 模块 自动根据操作系统选择

 

“多路”指的是多个网络连接

“复用”指的是复用同一个线程。采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络IO的时间消耗)

 

协程的本质就是在单线程下,由用户自己控制一个任务遇到io阻塞了就切换另外一个任务去执行,以此来提升效率。

posted @ 2018-07-26 09:44  Alice的小屋  阅读(110)  评论(0编辑  收藏  举报