码迷,mamicode.com
首页 > 其他好文 > 详细

io多路复用简介

时间:2020-05-24 10:13:55      阅读:43      评论:0      收藏:0      [点我收藏+]

标签:分时   一个   服务器   写入   时间复杂度   就是   处理   qps   就会   

redis之所以可以高效的执行命令,单线程每秒qps达到10w左右,是因为起io多路复用技术效率很高。

io多路复用解决了什么问题?

没有io多路复用,那么当服务器操作某一个fd执行read的时候,如果fd对应的客户端没有执行写操作,那么服务端就会阻塞,这个时候客户端2来了数据,服务端就没办法读取了

那么什么是io多路复用呢?

io多路复用就是服务器可以同时处理多个客户端发来的请求(其实并不是同时,只是分时),但是很多的fd可以被一个中间件解决(select poll 或者epoll),不需要服务端去阻塞读(写)了,这个任务交给了中间件,接下来讲一下select poll epoll这三个中间件的区别

select 有最大socket限制1024,每次有事件,就会通知服务器,去遍历这个数组,去判断到底是哪个socket有数据,然后读取,o n的时间复杂度

poll和select基一致,只是没有1024的限制,用为fd用的是链表实现的,有请求过来 处理的时间复杂度也是o n

epoll和select poll都不一样,服务端可以在每个fd注册一个事件,当该fd有数据的时候,就会通知用户空间,具体哪个fd有数据,可以读取(写入) o 1的时间复杂度

io多路复用简介

标签:分时   一个   服务器   写入   时间复杂度   就是   处理   qps   就会   

原文地址:https://www.cnblogs.com/tobemaster/p/12945515.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!