Que fait poll () avec un délai d’expiration de 0?

Je regarde la page de manuel poll() , qui me dit le comportement de poll() lorsque des valeurs positives et négatives sont passées pour le paramètre de délai d’attente. Cela ne me dit pas ce qui se passe si timeout est 0 . Des idées?

En regardant la page de manuel epoll_wait() , il me dit qu’avec une valeur de délai d’attente de 0 , il reviendra immédiatement, même si aucun événement n’est disponible. Est-il prudent de supposer que poll() se comporterait de la même manière?

Il reviendra immédiatement:

Si timeout est supérieur à zéro, il spécifie un intervalle maximal (en millisecondes) pour attendre qu’un descripteur de fichier soit prêt. Si timeout est égal à zéro, alors poll() reviendra sans blocage. Si la valeur de timeout est -1 , l’ poll bloquée indéfiniment.

, à partir de Mac OS X 10.5 ;

Intervalle maximal d’attente de l’interrogation, en millisecondes. Si cette valeur est 0, poll() retournera immédiatement. Si cette valeur est INFTIM (-1) , poll() bloquera indéfiniment jusqu’à ce qu’une condition soit trouvée.

, à partir de OpenBSD 3.8

À mon avis, attendre un délai d’attente signifie “avoir” un délai d’attente. De cette façon, je m’attendrais à ce que poll () vérifie réellement les descripteurs de fichier, puis attend si personne n’est prêt pour un délai d’attente de 0 millisecondes (aucune attente du tout). Mais le cas est que cela va simplement signaler si un fd est disponible.

J’ai aussi vérifié le code source de Linux et à ma connaissance, c’est comme cela que ça fonctionne: calcule d’abord le “futur” point d’attente, puis vérifie les descripteurs de fichier, puis, s’il n’y en a pas, attend le délai spécifié.

Cordialement,

À partir des pages de manuel Ubuntu:

L’argument timeout spécifie une limite supérieure du temps pendant lequel poll () bloquera, en millisecondes. Spécifier une valeur négative dans timeout signifie un timeout infini.

Parce qu’il n’y a pas de cas particulier pour 0, je suppose que poll () bloquera pendant 0 milliseconde.