La Elusive API de Temporizador Multiplataforma: Un Viaje a Través de las APIs del Sistema Operativo

2025-02-06

Este artículo explora los desafíos de las APIs de temporizador multiplataforma en la programación C. El autor descubre que diferentes sistemas Unix (incluyendo Linux, FreeBSD, NetBSD, etc.) manejan los temporizadores de maneras muy diferentes. La función POSIX timer_create, basada en señales, presenta numerosos problemas, como la mala interoperabilidad con otras primitivas del SO y la interferencia de la máscara de señal. El artículo profundiza en los pros y los contras de varias soluciones, incluyendo timerfd_create, kqueue, port_create e io_uring, concluyendo que, para aplicaciones multiplataforma, implementar temporizadores en el espacio de usuario, como lo hace libuv, es un enfoque más eficiente y confiable. Libuv usa una estructura de datos de montón mínimo para administrar temporizadores y usa llamadas al sistema como poll/epoll/kqueue para la multiplexación.