我正在查看poll() 手册页,它告诉我poll()为 timeout 参数传入正值和负值时的行为。它并没有告诉我如果 timeout 是 会发生什么0。有任何想法吗?
查看epoll_wait() 手册页,它告诉我超时值为 时0,即使没有可用的事件,它也会立即返回。假设它poll() 的行为方式相同是否安全?
它将立即返回:
如果 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() 将阻塞的时间上限,以毫秒为单位。在 timeout 中指定负值意味着无限超时。
因为 0 没有特殊情况,所以我假设 poll() 将阻塞 0 毫秒。