Section critique

Section critique

En programmation concurrente, une section critique est une portion de code dans laquelle il doit être garanti qu'il n'y aura jamais plus d'un thread simultanément. Il est nécessaire d'utiliser des sections critiques lorsqu'il y a accès à des ressources partagées par plusieurs thread.

Une section critique peut être protégée par un mutex, un sémaphore ou d'autres primitives de programmation concurrente.

Puisqu'à un moment donné, jamais plus d'un thread peut être actif dans une section critique, le thread la détenant doit la libérer le plus vite possible pour éviter qu'elle ne devienne un goulot d'étranglement. Libérer la section critique permet d'améliorer les performances en permettant aux threads en attente d'y accéder.

Exemple d'opération nécessitant une section critique

Soit deux threads qui souhaitent incrémenter un même compteur. L'incrémentation doit être protégée par une section critique. En effet, l'incrémentation d'une variable n'est pas forcément une opération atomique. Il serait par exemple possible de traduire l'incrémentation d'une variable dans le code assembleur (inspiré du bytecode de la JVM) suivant :

load @variable - Charger la variable sur une pile (En Java, chaque thread dispose de sa propre pile d'exécution)
load 1 - Charger la constante 1 sur la pile
add - Effectuer l'incrémentation
store @variable - Stocker le sommet de la pile dans la variable

Exemple de séquence d'opération conduisant à une erreur dans une incrémentation

Dans cet exemple, il faut quatre opérations pour réaliser l'incrémentation de la variable. Si deux tâches souhaitent effectuer l'incrémentation en même temps, le résultat de l'incrémentation ne sera pas juste. Par exemple, si la séquence des opérations est la suivante :

  • La tâche 1 charge la variable partagée sur sa pile d'exécution.
  • La tâche 2 charge la variable partagée sur sa pile d'exécution.
  • La tâche 1 charge la constante 1 sur sa pile d'exécution.
  • La tâche 2 charge la constante 1 sur sa pile d'exécution.
  • La tâche 1 effectue l'incrémentation.
  • La tâche 1 stocke le sommet de sa pile dans la variable partagée.
  • La tâche 2 effectue l'incrémentation.
  • La tâche 2 stocke le sommet de sa pile dans la variable partagée.

Après une telle séquence d'opérations, la variable n'aura été incrémentée qu'une seule fois.

Exemple de section critique de la vie de tous les jours

Le concept de section critique existe aussi dans la vie réelle. Il est possible de citer par exemple

Voir aussi


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Section critique de Wikipédia en français (auteurs)

Игры ⚽ Поможем решить контрольную работу

Regardez d'autres dictionnaires:

  • Critique De La Raison Pure — Première de couverture de la Kritik der reinen Vernunft Critique de la Raison pure Auteur Emmanuel Kant …   Wikipédia en Français

  • Critique de la Raison Pure — Première de couverture de la Kritik der reinen Vernunft Critique de la Raison pure Auteur Emmanuel Kant …   Wikipédia en Français

  • Critique de la Raison pure — Première de couverture de la Kritik der reinen Vernunft Critique de la Raison pure Auteur Emmanuel Kant …   Wikipédia en Français

  • Critique de la raison pure — Auteur Emmanuel Kant Genre philosophie Pays d origine Allemagne Lieu de parution Riga Éditeur …   Wikipédia en Français

  • Critique De Cinéma — Cinéma …   Wikipédia en Français

  • Critique cinéma — Critique de cinéma Cinéma …   Wikipédia en Français

  • Critique cinématographique — Critique de cinéma Cinéma …   Wikipédia en Français

  • Critique de cinema — Critique de cinéma Cinéma …   Wikipédia en Français

  • Critique De L'islam — Comme toutes les religions, l islam a été l objet de critiques depuis sa formation. Les critiques sont d ordre philosophique, scientifique, éthique, politique, théologique et même médicale et écologique. En général la critique d une religion peut …   Wikipédia en Français

  • Critique De La Psychanalyse — La psychanalyse a rencontré des critiques dès sa naissance. Les thèses de Freud ont pu parfois provoquer l opposition de scientifiques, médecins, philosophes et psychologues de son temps[1] même si elle rencont …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”