Aus meiner Sicht bedeutet das Warten auf eine Zeitüberschreitung, eine Zeitüberschreitung zu "haben". Auf diese Weise würde ich erwarten, dass poll() tatsächlich überprüft die Dateideskriptoren und wartet dann, wenn niemand bereit ist, bis zu einem Timeout von 0 Millisekunden (überhaupt keine Wartezeit). Aber der Fall ist, dass es nur signalisiert, wenn ein fd verfügbar ist.
Ich habe auch den Linux-Quellcode überprüft und meines Wissens nach funktioniert es so:Zuerst wird der "zukünftige" Wartepunkt berechnet, dann die Dateideskriptoren überprüft, dann, wenn keine verfügbar sind, auf die angegebene Timeout-Zeit gewartet.
Grüße,
Es wird sofort zurückgegeben:
Wenn timeout größer als Null ist, gibt es ein maximales Intervall (in Millisekunden) an, um darauf zu warten, dass ein Dateideskriptor bereit wird. Wenn das Zeitlimit Null ist, dann poll()
wird ohne Blockierung zurückkehren. Wenn der Wert von timeout -1
ist , die poll
blockiert auf unbestimmte Zeit.
, ab Mac OS X 10.5
;
Maximales Intervall, das auf den Abschluss der Abfrage gewartet werden soll, in Millisekunden. Wenn dieser Wert 0 ist, poll()
werde sofort wiederkommen. Wenn dieser Wert INFTIM (-1)
ist , poll()
blockiert auf unbestimmte Zeit, bis eine Bedingung gefunden wird.
, ab OpenBSD 3.8