Una biblioteca mínima de E/S asíncronas multiplataforma de alto rendimiento escrita en Zig.
bind
, listen
, connect
, accept
read
, recv
, recvFrom
write
, send
, sendTo
bind
, listen
, connect
, accept
read
, recv
, recvFrom
write
, send
, sendTo
Un Notifier
notifica la finalización de eventos de E/S o la preparación para lectura/escritura de descriptores/identificadores de archivos registrados.
Si un Notifier
informa la finalización de eventos de E/S, está designado para envolver una capa de notificación de E/S basada en proactor en el sistema operativo, como los puertos de finalización de E/S en Windows.
Si un Notifier
informa la preparación para lectura/escritura de descriptores/identificadores de archivos registrados, está designado para envolver una capa de notificación de E/S basada en reactor en el sistema operativo, como epoll en Linux o kqueue en sistemas operativos basados en Darwin. .
El propósito del Notifier
es impulsar la ejecución de llamadas al sistema de E/S asincrónicas tras la notificación de un evento de E/S basado en reactor/proactor mediante el envío de tramas de funciones asíncronas suspendidas para ser reanudadas por un grupo de subprocesos/programador (por ejemplo, kprotty/zap ).
La implementación de un Handle
es específica de una implementación Notifier
, aunque en general envuelve y representa un descriptor/identificador de archivo en un programa.
Sujeto a la implementación Notifier
a la que pertenece la implementación de un Handle
, el estado requerido para controlar las llamadas al sistema de E/S asincrónicas a través de un Handle
se mantiene dentro de un Handle
.
Un ejemplo sería una lista enlazada intrusiva de marcos de funciones asincrónicas suspendidas que deben reanudarse cuando el destinatario recibe una notificación de que un descriptor/identificador de archivo está listo para escribirse o leerse.