À retenir
- Un seul accès simultané autorisé pour garantir la cohérence des données.
- Protégée généralement par des outils appelés mutex ou sémaphores.
- Une mauvaise gestion peut provoquer des bugs aléatoires très difficiles à corriger.
Une section critique est une portion spécifique d'un programme informatique qui ne doit être exécutée que par un seul fil d'exécution (thread) à la fois. C'est un peu comme une cabine téléphonique : si deux personnes essaient d'y entrer en même temps pour passer un appel, la communication devient impossible ou confuse.
Étymologie
Traduction directe de l'anglais critical section. Le mot « critique » indique ici un point de vulnérabilité où une mauvaise synchronisation peut entraîner des erreurs graves de données, tandis que « section » désigne la portion de code concernée.
Exemples d'usage
- La mise à jour du solde d'un compte bancaire lors d'un retrait d'argent.
- L'incrémentation d'un compteur de visites sur un site web très fréquenté.
- L'écriture de données dans un fichier de journalisation (log) partagé par plusieurs services.
Cas d'usage
Ce concept intervient principalement en programmation concurrente et dans les systèmes d'exploitation. On l'utilise dès que plusieurs tâches s'exécutent en parallèle (multithreading) et doivent manipuler une ressource commune, comme une variable en mémoire, une base de données ou un périphérique matériel.
Bonnes pratiques
Il est recommandé de garder les sections critiques les plus courtes et rapides possibles pour ne pas ralentir le reste du programme. Il faut également veiller à toujours déverrouiller l'accès à la fin de la section (en utilisant des structures de type try...finally) pour éviter que le système ne reste bloqué (interblocage).
Synonymes
Antonymes
Conseil
Pour bien débuter, considérez toute variable globale ou partagée comme potentiellement dangereuse dans un environnement parallèle. Utilisez systématiquement des mécanismes de verrouillage (comme les lock en C# ou synchronized en Java) autour des lignes de code qui modifient ces valeurs.
Questions fréquentes
Que se passe-t-il si on oublie de protéger une section critique ?
On risque une 'race condition' (condition de concurrence) : les données peuvent être corrompues ou écrasées de manière imprévisible.
Un programme peut-il avoir plusieurs sections critiques ?
Oui, chaque ressource partagée différente nécessite généralement sa propre section critique protégée par son propre verrou.