IO多路复用
2021-04-02 13:32:16 0 举报
IO多路复用
作者其他创作
大纲/内容
select虽然可以监控多个fd了,但select其实现的本质上还是通过不断的轮询fd来监控数据状态, 因为大部分轮询请求其实都是无效的
线程1
应用程序
如果需要同时进行多个IO操作就需要开多个线程并且每个线程都需要调用recvfrom去请求读取
EWOULDBLOCK/成功
网络IO
receiver线程
这样的弊端很明显,如果存在高并发场景,每来一个请求就创建一个线程会浪费大量的资源所以引入了多路复用,专门开启一个线程去进行遍历并轮询缓冲区,查看数据是否已经准备好
轮询
不断发送recvfrom请求获取数据
recvfrom请求接收数据
线程3
线程2
询问线程
TCP接收缓冲区
有可读事件则分配给recever线程
select
线程4
阻塞调用
0 条评论
下一页