Condition de concurrence

Une condition de concurrence se produit lorsqu’un programme dépend du moment où un ou plusieurs processus s’exécutent pour fonctionner correctement. Si un thread s’exécute ou se termine à un moment inattendu, cela peut entraîner un comportement imprévisible, comme une sortie incorrecte ou un blocage du programme.

La plupart des logiciels sont multithreads, ce qui signifie qu’ils peuvent traiter plusieurs threads à la fois. Une application bien programmée veille à ce que les résultats de chaque thread soient traités dans l’ordre attendu. Si un programme dépend de threads qui s’exécutent dans une séquence imprévisible, une condition de concurrence peut se produire.

Un exemple simple est une porte logique qui traite des valeurs booléennes. La porte logique AND possède deux entrées et une sortie. Si les entrées A et B sont vraies, la porte AND produit TRUE. Si l’une des entrées ou les deux sont fausses, elle produit FALSE. Une condition de concurrence peut se produire si un programme vérifie le résultat de la porte logique avant que les variables A et B soient chargées. Le processus correct serait le suivant :

  1. Charger la variable A
  2. Charger la variable B
  3. Vérifier le résultat de la porte logique AND

Une séquence incorrecte serait la suivante :

  1. Charger la variable A
  2. Vérifier le résultat de la porte logique AND
  3. Charger la variable B

Le résultat du deuxième exemple ci-dessus peut être identique ou non à celui du premier exemple. Par exemple, la variable B peut être FALSE avant et après son chargement, ce qui ne changerait pas le résultat. Si A est FALSE, peu importe que B soit TRUE ou FALSE. Cependant, si A et B sont toutes les deux vraies, le résultat devrait être TRUE. Charger la variable B après avoir vérifié le résultat de la porte logique produirait un résultat incorrect : FALSE.

La sortie incohérente produite par les conditions de concurrence peut provoquer des bogues difficiles à détecter. Les programmeurs peuvent éviter ces problèmes en veillant à ce que les threads soient traités dans une séquence cohérente.

Mis à jour January 24, 2020 par Per C.

quizTestez vos connaissances

Data used to boot a computer is located in a storage area called what?

A
Boot frame
0%
B
Boot box
0%
C
Boot sector
0%
D
Boot turbine
0%
Correct! Incorrect!     View the Boot Sector definition.
More Quizzes →

Le dictionnaire informatique Tech Terms

La définition de Condition de concurrence sur cette page est une définition originale rédigée par les auteurs de TechTerms.com. Si vous souhaitez référencer cette page ou citer cette définition, veuillez utiliser la barre de citation verte directement sous la définition.

Notre objectif est d'expliquer la terminologie informatique de manière simple et accessible. Nous visons l'exactitude et la clarté dans chaque définition publiée. Si vous avez des commentaires ou souhaitez suggérer un nouveau terme technique, veuillez nous contacter.

La newsletter Tech Terms

Améliorez vos connaissances techniques avec notre newsletter quotidienne ou hebdomadaire ! Abonnez-vous dès aujourd'hui pour recevoir de nouveaux termes et des quiz dans votre boîte de réception.

Inscrivez-vous à la newsletter gratuite TechTerms

À quelle fréquence souhaitez-vous recevoir un e-mail ?

Vous pouvez vous désabonner ou modifier vos préférences à tout moment via les liens disponibles dans chaque e-mail. Des questions ? Veuillez nous contacter.

Remarque : La newsletter est envoyée en anglais.