Salut,
ouai, malheureusement, le manque de neige fait que j'ai plus de temps pour bricoler
niconol a écrit :J'ai beau lire timerfd_create(2) , je ne comprends pas l'avantage à settimer .. tu sais me l'expliquer? Ca m'intéresse.
Avec
settimer(), tu n'utilises qu'un seul timer et tu génères des signaux qui sont comme des interruptions ... donc vont donc poser les mêmes problèmes pour synchroniser d'éventuels autres threads (dont la boucle principale de ton programme).
Avec les
timerfd, tu passes par une abstraction supplémentaire que sont les descripteurs de fichier. Ces descripteurs sont la méthodes la plus standard et la plus versatile pour gérer des événements sous Unix.
Tu peux donc attendre plusieurs timers, l'arriver de caractères sur un fichier, ou des événements extérieure (par eventfd).
Un exemple étant plus parlant qu'un long discours, sur le tableau de bord de ma domotique, j'attends :
- un timer pour passer d'une page a l'autre : toutes les 5 secondes, je bascule entre la météo, les temperatures des differents étages de ma maison, des infos plus générales
- un second timer qui gère les animations graphiques (clignotement des alarmes, ...)
- l'arrivée d'information de ma domotique par MQTT (températures, ouverture de portes, défaillances de trucs et bidulles, ...)
- l'arrivée de commandes de contrôle
Tout est
banalisé sous la forme de descripteur de fichier : donc que ce soit les timer, les events, les messages, ou du contenu par fichier, tout passe par la même boucle d'attente en utilisant les même API (fonction
poll()).
Bref, ils seront donc légèrement moins précis (enfin, ça dépend surtout de la manière dont tu programmes), mais sont beaucoup plus flexibles et intégré au reste.