What does poll() do with a timeout of 0?

前端 未结 3 2477
自闭症患者
自闭症患者 2021-02-19 21:02

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.

相关标签:
3条回答
  • 2021-02-19 21:28

    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

    0 讨论(0)
  • 2021-02-19 21:33

    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,

    0 讨论(0)
  • 2021-02-19 21:51

    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.

    0 讨论(0)
提交回复
热议问题