Quel est l’ordre dans lequel les descripteurs de fichiers dans epoll sont renvoyés?

Supposons que j’ai défini un ensemble de descripteurs de fichiers, par exemple 8, 9, 10, 11, 12, dans l’ordre spécifié, et que j’effectue une opération epoll_wait () pour que les données soient lues.

epoll_wait revient avec les données à lire sur les sockets 8, 10 et 11. L’ordre des descripteurs de fichier renvoyés dans le tableau epoll sera-t-il 8, 10 et 11 ou peuvent-ils être mélangés?

La page de manuel ne dit rien sur l’ordre, il ne serait donc probablement pas judicieux de dépendre de l’ordre quand vous l’appelez. Même s’ils étaient renvoyés dans l’ordre dans une implémentation, ils pourraient ne pas l’être dans une autre. Il serait préférable de supposer qu’ils pourraient être retournés dans n’importe quel ordre.

Pensez-y logiquement. Vraisemblablement, ils ne sont pas tous marqués comme lisibles comme une seule opération atomique, et epoll_wait pourrait alors tout aussi bien renvoyer 1 fd disponible à chaque appel. Cela n’a aucun sens de dépendre de l’ordre de sa sortie.