11. Choisir le bon mécanisme
| Besoin | Mécanisme naturel | Point déterminant |
|---|---|---|
| Protéger une très courte région bas niveau | Spinlock atomique | Évite un changement de contexte, mais consomme du CPU |
| Protéger un invariant avec propriété du verrou | Mutex | Le propriétaire acquiert et libère |
| Représenter plusieurs permissions | Sémaphore de comptage | Le compteur mémorise les ressources disponibles |
| Imposer un ordre entre deux événements | Sémaphore initialisé à 0 | Le signal est mémorisé comme permission |
| Attendre un prédicat complexe | Variable de condition + mutex | Libération/blocage atomiques et test dans une boucle |
| Synchroniser la fin d’une phase collective | Barrière | Tous les membres doivent atteindre le rendez-vous |
Aucun mécanisme ne remplace la compréhension de l’invariant. Il faut identifier :
- quel état est partagé;
- quelle relation doit être garantie;
- qui peut bloquer et qui peut réveiller;
- si l’attente sera courte ou longue;
- si la propriété, l’équité, la priorité ou le partage interprocessus sont nécessaires.