L'API de temporisation multiplateforme insaisissable : un voyage à travers les API du système d'exploitation

2025-02-06

Cet article explore les défis des API de temporisation multiplateformes dans la programmation C. L'auteur découvre que différents systèmes Unix (y compris Linux, FreeBSD, NetBSD, etc.) gèrent les temporisations de manières très différentes. La fonction POSIX timer_create, basée sur les signaux, présente de nombreux problèmes, tels qu'une mauvaise interopérabilité avec d'autres primitives du système d'exploitation et des interférences avec le masque de signal. L'article examine les avantages et les inconvénients de plusieurs solutions, notamment timerfd_create, kqueue, port_create et io_uring, et conclut que, pour les applications multiplateformes, la mise en œuvre des temporisations dans l'espace utilisateur, comme le fait libuv, est une approche plus efficace et fiable. Libuv utilise une structure de données de tas minimal pour gérer les temporisations et utilise des appels système tels que poll/epoll/kqueue pour le multiplexage.