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

发布于 2024-07-13 22:15:51 字数 484 浏览 7 评论 0原文

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

看看epoll_wait() 手册页,它告诉我,超时值为0,即使没有可用的事件,它也会立即返回。 可以安全地假设 poll() 会有同样的行为吗?

I'm looking at the poll() man page, and it tells me the behavior of poll() when positive and negative values are passed in for the timeout parameter. It doesn't doesn't tell me what happens if timeout is 0. Any ideas?

Looking at the epoll_wait() man page, it tells me that with a timeout value of 0, it will return right away, even if there are no events available. Is it safe to assume that poll() would behave the same way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

谁人与我共长歌 2024-07-20 22:15:51

它将立即返回:

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

,从 Mac OS X 10.5 开始;

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

,从 OpenBSD 3.8 开始

It will return immediately:

If timeout is greater than zero, it specifies a maximum interval (in milliseconds) to wait for any file descriptor to become ready. If timeout is zero, then poll() will return without blocking. If the value of timeout is -1, the poll blocks indefinitely.

, as of Mac OS X 10.5;

Maximum interval to wait for the poll to complete, in milliseconds. If this value is 0, poll() will return immediately. If this value is INFTIM (-1), poll() will block indefinitely until a condition is found.

, as of OpenBSD 3.8

四叶草在未来唯美盛开 2024-07-20 22:15:51

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

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

问候,

As I see it, waiting for a timeout means "having" a timeout. This way I would expect that poll() actually checks the file descriptors, and then waits if no one is ready to a timeout of 0 milliseconds (no wait at all). But the case is that it will just signal if a fd is available.

I also checked linux source code and to my knowledge, this is the way it works: first calculates the "future" waiting point, then checks the file descriptors, then if none available, waits for the timeout specified time.

Regards,

陈独秀 2024-07-20 22:15:51

来自 Ubuntu 手册页:

超时参数指定
时间上限
poll() 将阻塞,以毫秒为单位。
指定超时负值
意味着无限超时。

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

From the Ubuntu man pages:

The timeout argument specifies an
upper limit on the time for which
poll() will block, in milliseconds.
Specifying a negative value in timeout
means an infinite timeout.

Because there is no special case for 0, I would assume that poll() will block for 0 milliseconds.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文