poll()在超时为0时做什么?

我正在查看poll() 手册页 ,它告诉我当为timeout参数传递正值和负值时poll()的行为。 它不会告诉我如果超时为0会发生什么。 有任何想法吗?

查看epoll_wait() 手册页 ,它告诉我,当超时值为0 ,即使没有可用事件,它也会立即返回。 假设poll() 行为方式相同是否安全

它会立即返回:

如果timeout大于零,则它指定等待任何文件描述符准备就绪的最大间隔(以毫秒为单位)。 如果timeout为零,则poll()将返回而不会阻塞。 如果timeout的值为-1 ,则poll无限期地阻塞。

,从Mac OS X 10.5 ;

等待轮询完成的最大间隔(以毫秒为单位)。 如果此值为0,则poll()将立即返回。 如果此值为INFTIM (-1) ,则poll()将无限期地阻塞,直到找到条件。

,从OpenBSD 3.8

在我看来,等待超时意味着“有”超时。 这样我会期望poll()实际检查文件描述符,然后等待没有人准备好超时0毫秒(根本不等待)。 情况是它只会发出fd是否可用的信号。

我还检查了linux源代码,据我所知,这是它的工作方式:首先计算“未来”等待点,然后检查文件描述符,如果没有可用,则等待超时指定时间。

问候,

来自Ubuntu手册页:

timeout参数指定poll()将阻止的时间上限(以毫秒为单位)。 在超时中指定负值意味着无限超时。

因为0没有特殊情况,我会假设poll()将阻塞0毫秒。