Uma biblioteca mínima de E/S assíncrona de alto desempenho e multiplataforma escrita em Zig.
bind
, listen
, connect
, accept
read
, recv
, recvFrom
write
, send
, sendTo
bind
, listen
, connect
, accept
read
, recv
, recvFrom
write
, send
, sendTo
Um Notifier
notifica sobre a conclusão de eventos de E/S ou sobre a prontidão para leitura/gravação de descritores/identificadores de arquivos registrados.
Caso um Notifier
relate a conclusão de eventos de E/S, ele será designado para envolver uma camada de notificação de E/S baseada em proator no sistema operacional, como portas de conclusão de E/S no Windows.
Caso um Notifier
relate a prontidão de leitura/gravação de descritores/identificadores de arquivos registrados, ele será designado para envolver uma camada de notificação de E/S baseada em reator no sistema operacional, como epoll no Linux ou kqueue em sistemas operacionais baseados em Darwin .
O objetivo do Notifier
é conduzir a execução de syscalls de E/S assíncronas após a notificação de um evento de E/S baseado em reator/proator, despachando quadros de função assíncronos suspensos para serem retomados por um pool de threads/agendador (por exemplo, kprotty/zap ).
A implementação de um Handle
é específica para uma implementação Notifier
, embora no geral envolva e represente um descritor/identificador de arquivo em um programa.
Sujeito à implementação Notifier
em que a implementação de um Handle
se enquadra, o estado necessário para conduzir syscalls de E/S assíncronas por meio de um Handle
é mantido dentro de um Handle
.
Um exemplo seria uma lista vinculada intrusiva de quadros de função assíncronos suspensos que devem ser retomados após o destinatário de uma notificação de que um descritor/identificador de arquivo está pronto para ser gravado/lido.