Leçon 11 : Variables de condition — Coordination des threads
Un mutex empêche les conditions de course, mais ne permet pas à un thread d'attendre qu'une condition devienne vraie. Les variables de condition permettent à un thread de dormir efficacement jusqu'à ce qu'un autre thread signale qu'un changement a eu lieu.
Une variable de condition, c'est comme une clochette de magasin : tu attends à la porte, et quand quelqu'un pose un article sur l'étagère, il la fait sonner — alors tu entres.
- variable de condition
- Une primitive de synchronisation qui permet à un thread d'attendre atomiquement une condition tout en libérant le mutex, et de se réveiller quand un autre thread la signale.
- producteur-consommateur
- Un pattern de programmation dans lequel un thread (le producteur) génère des données et les place dans un buffer, tandis qu'un autre thread (le consommateur) les récupère et les traite.
- réveil intempestif
- Une situation où pthread_cond_wait retourne alors qu'aucun thread n'a appelé signal. Cela impose de vérifier le prédicat dans une boucle.
- broadcast
- pthread_cond_broadcast réveille tous les threads en attente sur une variable de condition, contrairement à signal qui n'en réveille qu'un seul.
- prédicat
- La condition vérifiée avant et après pthread_cond_wait pour se prémunir contre les réveils intempestifs et les problèmes de TOCTOU.