IE盒子

搜索
查看: 130|回复: 0

c++ http库 cpp-httplib为什么使用了IO复用?

[复制链接]

1

主题

2

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2023-1-15 18:08:09 | 显示全部楼层 |阅读模式
最近刚开始读cpp-httplib源码,发现它是采用blocking IO + 线程池的模式,主线程accept后,构造一个job push进线程池的任务队列中,每个连接由线程池里的某一个线程处理。既然这样,每个线程同一时刻只处理一个fd上的数据读写,为什么还要用select或者poll这样的IO复用呢?它的select_read函数里每次只是监听一个套接字,这样select或者poll意义在哪里呢?
我以前认为当出现一个线程需要同时监听多个fd上的事件,或者一个线程既要处理连接事件,又要处理io事件的情况,才需要io复用,但是httplib这种情况,负责accept的线程,以及每个连接的处理线程都是不同的线程,也就是每个线程只监听一个fd,为啥每次读fd或者accept之前还有调用select()/poll()?
可能是理解还不到位,有没有读过cpp-httplib的大佬可以指点一下?感激不尽。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表