Skip to main content

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

Les conditions de course concernent les tentatives d'un système ou d'un appareil individuel pour s'engager dans le multitâche.Généralement, une condition de course existe lorsque le système tente de traiter simultanément deux opérations différentes ou plus, mais n'est pas en mesure de le faire.La raison de l'échec est que les opérations ne sont pas alignées dans la séquence appropriée, une circonstance peut entraîner l'arrêt du système.

Bien que de nombreux appareils différents soient configurés pour permettre le multitâche, il existe toujours un processus interne qui crée une hiérarchie de fonctions.Pour que certaines fonctions se produisent, d'autres fonctions doivent se produire à l'avance.Bien que l'utilisateur final perçoit que toutes les fonctions peuvent sembler avoir lieu en même temps, ce n'est pas nécessairement le cas.

Une condition de course est créée lorsque deux opérations ou plus se lient les unes avec les autres pour atteindre l'achèvement avant les autres opérations.Lorsque toutes les fonctions individuelles sont correctement organisées, cela conduit à l'exécution réussie de toutes les fonctions en temps opportun.Cependant, si la séquence d'opérations est déséquilibrée, cela crée un goulot d'étranglement.Dans le pire des cas, la condition de course rendra impossible pour le système de continuer dans sa tentative de traiter toutes les fonctions de l'ordre actuellement engagées.Étant donné que le système peut avoir besoin de traiter la cinquième fonction de la chaîne avant que les premières et secondes fonctions puissent être remplies, la chaîne entière doit être interrompue et rétablie dans l'ordre approprié.

Un exemple courant d'une condition de course concerne le traitement des données.Si un système reçoit des commandes pour lire les données existantes lors de la rédaction de nouvelles données, cela peut conduire à un conflit qui fait que le système s'arrête d'une manière ou d'une autre.Le système peut afficher un certain type de message d'erreur si la quantité de données traitées a placé une contrainte excessive sur les ressources disponibles, ou si le système peut simplement s'arrêter.Lorsque cela se produit, c'est généralement une bonne idée de redémarrer le système et de recommencer la séquence.Si la quantité de données traitées est considérable, il peut être préférable de permettre la fin de l'assimilation des nouvelles données avant de tenter de lire l'une des données actuellement stockées.

De nombreux systèmes évitent le potentiel d'une condition de course en fixant des priorités dans les protocoles opérationnels.Les priorités sont établies pour fonctionner bien dans les capacités du système et limitent ainsi la capacité d'une condition de course à se développer.