C++ 将超时值设置为套接字轮询/选择的最佳实践是什么?

C++ 将超时值设置为套接字轮询/选择的最佳实践是什么?,c++,multithreading,sockets,polling,epoll,C++,Multithreading,Sockets,Polling,Epoll,我正在使用轮询机制管理多达100个连接。对于poll()调用的超时值应该是什么或如何确定它,是否有任何标准做法 我的案件详情- 我有一个调度程序线程监听所有连接。一旦连接准备就绪,我就禁用它进行轮询,并将connfd转发到处理读取的线程池。调度程序线程返回轮询 线程池使用connfd上的读取并将其发回调度程序,以便它可以添加它以便下次轮询。但是,在它从poll()调用返回之前,调度器将无法将其添加到轮询中。我需要调度器定期检查是否需要重新启用任何connfd的轮询 什么是好的超时值,以便disp

我正在使用轮询机制管理多达100个连接。对于poll()调用的超时值应该是什么或如何确定它,是否有任何标准做法

我的案件详情-

我有一个调度程序线程监听所有连接。一旦连接准备就绪,我就禁用它进行轮询,并将connfd转发到处理读取的线程池。调度程序线程返回轮询

线程池使用connfd上的读取并将其发回调度程序,以便它可以添加它以便下次轮询。但是,在它从poll()调用返回之前,调度器将无法将其添加到轮询中。我需要调度器定期检查是否需要重新启用任何connfd的轮询


什么是好的超时值,以便dispatcher线程可以定期停止轮询并更新其pollfd列表。

您不需要使用超时(只需将其设置为
INF

超时基本上是在需要显式计时器操作时使用的(一些异步IO库会为您处理此操作)

要唤醒在轮询中睡眠的线程,请使用。在Linux上,
eventfd
也可以使用

使用
timerfd
(仅限Linux),可以完全取消超时