出于学术目的,我正在用C编写服务器程序。
服务器在初始化期间为固定数量的工作线程提供午餐,然后线程开始在“请求列表”上等待。
此后,服务器开始一个无限循环,在该循环中它必须执行以下两项操作:
read()
(仅通过选择/轮询而不是epoll),并从集合中删除所有可读的文件描述符(在我们使用select()
或struct pollfd*
的情况下为fd_set) (在我们使用poll的情况下)并将其放在线程正在等待的列表中。通过这种方式,工作线程将从列表中提取请求并为它们提供服务。
每个请求都需要read()
和write()
调用的未定义顺序。
所有我想了解的是,是否存在用于从fd_set
或struct pollfd*
添加和删除文件描述符的线程安全方式。