Une bibliothèque d'E/S asynchrones multiplateformes hautes performances minimale écrite en Zig.
bind , listen , connect , accept read , recv , recvFrom write , send , sendTo bind , listen , connect , accept read , recv , recvFrom write , send , sendTo Un Notifier notifie l'achèvement des événements d'E/S ou l'état de préparation en lecture/écriture des descripteurs/descripteurs de fichiers enregistrés.
Si un Notifier signale l'achèvement d'événements d'E/S, il est conçu pour envelopper une couche de notification d'E/S basée sur un proacteur dans le système d'exploitation, telle que les ports d'achèvement d'E/S sous Windows.
Si un Notifier signale l'état de préparation en lecture/écriture des descripteurs/handles de fichiers enregistrés, il est conçu pour envelopper une couche de notification d'E/S basée sur un réacteur dans le système d'exploitation, comme epoll sous Linux ou kqueue sur les systèmes d'exploitation basés sur Darwin. .
Le but du Notifier est de piloter l'exécution d'appels système d'E/S asynchrones lors de la notification d'un événement d'E/S basé sur un réacteur/proactor en distribuant des trames de fonction asynchrones suspendues qui seront reprises par un pool de threads/planificateur (par exemple, kprotty/zap ).
L'implémentation d'un Handle est spécifique à une implémentation Notifier , bien que globalement elle entoure et représente un descripteur/handle de fichier dans un programme.
Sous réserve de l'implémentation Notifier à laquelle appartient l'implémentation d'un Handle , l'état requis pour piloter les appels système d'E/S asynchrones via un Handle est conservé à l'intérieur d'un Handle .
Un exemple serait une liste chaînée intrusive de trames de fonctions asynchrones suspendues qui doivent être reprises dès le destinataire d'une notification indiquant qu'un descripteur/descripteur de fichier est prêt à être écrit/lu.