gpt4 book ai didi

c++ - 为套接字轮询/选择设置超时值的最佳做法是什么?

转载 作者:太空狗 更新时间:2023-10-29 23:12:56 27 4
gpt4 key购买 nike

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

我的案例详情-

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

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

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

最佳答案

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

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

要唤醒在轮询中休眠的线程,请使用 self-pipe trick .在 Linux 上,eventfd 也可以使用。

使用 timerfd(仅限 Linux),超时可以完全被淘汰。

关于c++ - 为套接字轮询/选择设置超时值的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42777111/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com