1. Finalité du module
La concurrence apparaît lorsque plusieurs processus ou threads progressent pendant des intervalles qui se chevauchent et accèdent à un état commun. Elle ne signifie pas nécessairement qu’ils s’exécutent physiquement au même instant : un seul processeur qui les entrelace suffit à créer les mêmes problèmes de cohérence.
Le module poursuit deux objectifs complémentaires :
- reconnaître une condition de concurrence, c’est-à-dire un résultat qui dépend d’un entrelacement non maîtrisé;
- employer des mécanismes de synchronisation qui imposent les relations d’ordre nécessaires et protègent les opérations indivisibles.
La progression pédagogique part d’exemples incorrects, identifie la fenêtre d’interruption qui les brise, puis introduit successivement Peterson, les instructions atomiques, les sémaphores, les mutex, les variables de condition et les barrières.