为什么select()调用有超时?在常见情况下,它的合理价值是什么?

时间:2016-11-04 16:20:04

标签: c sockets posix poll-syscall

我想知道POSIX select()调用中的超时值。我理解为什么人们可能想要0的值(用于轮询文件描述符)。还有哪些其他常用价值,以及用途是什么?

1 个答案:

答案 0 :(得分:0)

请注意,poll(2)通常优于select(2)用于多路复用(因为FD_SETSIZE是最高文件描述符的强限制。)

您将使用的实际超时取决于具体情况。在许多GUI widget toolkit框架中,您知道屏幕以50或60Hz刷新,因此您可能会相应地设置超时(例如,设置为20毫秒)。或者您知道鼠标应该每秒至少跟随10次,等等。实际上,这些工具包也有超时,因此pollselect超时是在{的每个周期动态计算的。 {3}}。在Web服务器中,超时是可配置的,程序将相应地计算poll超时。

在实践中,event looppoll(2)通常高于一毫秒,可能低于几十秒。因人而异。顺便说一下,确切的超时通常不是很重要。

另请参阅select(2)网页(非常有趣的阅读)。