我正在查看 poll() 的文档,它告诉我在 timeout 参数传入正值和负值时的行为。但它没有说明如果 timeout 为 0
会发生什么。 你有什么想法吗?
查看 epoll_wait()
的文档,它告诉我当 timeout 值为 0
时,即使没有事件可用,它也会立即返回。那么可以安全地假设 poll()
也会表现出同样的行为吗?
它将立即返回:
如果timeout大于零,则指定等待任何文件描述符准备就绪的最长时间间隔(以毫秒为单位)。 如果timeout为零,则
poll()
将立即返回。 如果timeout的值为-1
,poll
将无限期地阻塞。
截至于Mac OS X 10.5
;
在毫秒内等待poll完成的最大间隔。 如果此值为0,则
poll()
将立即返回。 如果此值为INFTIM (-1)
,则poll()
将无限期地阻塞,直到找到条件。
截至于OpenBSD 3.8
来自Ubuntu手册:
timeout参数指定了poll()函数阻塞的最长时间上限,以毫秒为单位。如果timeout参数指定为负值,则表示超时时间无限。
由于没有针对0的特殊情况,因此我认为poll()函数将会阻塞0毫秒。