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.