多线程和套接字多路复用(池)

时间:2019-01-20 18:27:05

标签: c multithreading sockets multiplexing

出于学术目的,我正在用C编写服务器程序。

服务器在初始化期间为固定数量的工作线程提供午餐,然后线程开始在“请求列表”上等待。

此后,服务器开始一个无限循环,在该循环中它必须执行以下两项操作:

  • 检查是否有新连接
  • 在连接的客户端上检查可能的read()(仅通过选择/轮询而不是epoll),并从集合中删除所有可读的文件描述符(在我们使用select()struct pollfd*的情况下为fd_set) (在我们使用poll的情况下)并将其放在线程正在等待的列表中。

通过这种方式,工作线程将从列表中提取请求并为它们提供服务。 每个请求都需要read()write()调用的未定义顺序。

所有我想了解的是,是否存在用于从fd_setstruct pollfd*添加和删除文件描述符的线程安全方式。

0 个答案:

没有答案