Qu'est-ce qu'une condition de concurrence?

Une condition de concurrence ou un danger de concurrence est un scénario dans un système de traitement électronique dans lequel le résultat d'un calcul peut être affecté par une séquence d'événements imprévue ou non contrôlée. Le concept sous-jacent est que les résultats d'un processus ne devraient jamais être affectés par l'une des opérations "gagner une course" (finir premier).

  • Exemple.
  • Conditions de course du processeur.
  • Conditions de course du logiciel.

Considérez l'ensemble d'opérations suivant:

  1. variable a = 1
  2. variable a = a * 5
  3. variable b = a - 1

Si ces opérations sont traitées dans l'ordre approprié, la variable b doit être égale à 4. Mais si l'opération 3 est exécutée avant la fin de l'opération 2, b sera égal à 0.

Conditions de course chez les processeurs

Les conditions de concurrence constituent un problème important dans la conception de la CPU qui utilise des techniques de traitement parallèles et simultanées pour exécuter plusieurs instructions dans une période de temps qui se chevauche. Pour que le résultat des calculs ne soit pas corrompu, il faut toujours anticiper et éviter les conditions de concurrence.

Conditions de course dans le logiciel

C'est également un problème important pour les développeurs de logiciels, qui doivent gérer toutes les conditions de concurrence pouvant survenir lorsque leur code est utilisé dans des situations réelles. Il est notoire qu'une situation de compétition mal gérée dans le logiciel du robot d'exploration Spirit de la NASA a presque entraîné sa perte, peu de temps après son atterrissage sur Mars.

Conception, traitement parallèle, termes de programmation