A API de Temporizador Multiplataforma Elusive: Uma Jornada Através das APIs do Sistema Operacional
Este artigo explora os desafios das APIs de temporizador multiplataforma na programação C. O autor descobre que diferentes sistemas Unix (incluindo Linux, FreeBSD, NetBSD, etc.) lidam com temporizadores de maneiras muito diferentes. A função POSIX timer_create, baseada em sinais, apresenta vários problemas, como interoperabilidade ruim com outros primitivos do SO e interferência na máscara de sinal. O artigo examina os prós e contras de várias soluções, incluindo timerfd_create, kqueue, port_create e io_uring, concluindo que, para aplicativos multiplataforma, implementar temporizadores no espaço do usuário, como o libuv faz, é uma abordagem mais eficiente e confiável. O libuv usa uma estrutura de dados de heap mínimo para gerenciar temporizadores e usa chamadas de sistema como poll/epoll/kqueue para multiplexação.