Si está buscando algo exactamente como IOCP, no lo encontrará porque no existe.
Windows usa un modelo de notificación al finalizar (por lo tanto, I/O Finalización Puertos). Inicia alguna operación de forma asincrónica y recibe una notificación cuando la operación se ha completado.
Las aplicaciones de Linux (y la mayoría de las similares a Unix) generalmente usan un modelo de notificación cuando está listo. Recibe una notificación de que se puede leer o escribir en el socket sin bloqueo. Luego, realiza la operación de E/S, que no se bloqueará.
Con este modelo, no necesita E/S asíncrona. Los datos se copian inmediatamente dentro o fuera del búfer del socket.
El modelo de programación para esto es un poco complicado, por eso existen bibliotecas de abstracción como libevent. Proporciona un modelo de programación más simple y abstrae las diferencias de implementación entre los sistemas operativos compatibles.
También hay una notificación en el modelo listo en Windows (seleccione o WSAWaitForMultipleEvents), que puede haber visto antes. No puede escalar a una gran cantidad de sockets, por lo que no es adecuado para aplicaciones de red de alto rendimiento.
No dejes que eso te desanime:Windows y Linux son sistemas operativos completamente diferentes. Algo que no escala bien en un sistema puede funcionar muy bien en el otro. Este enfoque en realidad funciona muy bien en Linux, con un rendimiento comparable al de IOCP en Windows.
IOCP se pronuncia "E/S asíncrona" en varias plataformas UNIX:
- POSIX AIO es el estándar
- Kernel AIO, epoll e io_uring parecen ser implementaciones específicas de Linux
- Kqueue es la implementación de *BSD y Mac OSX
- Message Passing Interface (MPI) es una opción para la informática de alto rendimiento
- referencia obligatoria de Boost - Boost.Asio