Qu'est-ce qu'une condition de concurrence?
Les conditions de course sont liées aux tentatives d'un système ou d'un périphérique individuel de se lancer dans plusieurs tâches. Généralement, une situation de concurrence critique existe lorsque le système tente de traiter simultanément deux opérations différentes ou plus, mais ne peut pas le faire. La raison de l'échec est que les opérations ne sont pas alignées dans le bon ordre, ce qui peut entraîner l'arrêt du système.
Bien que de nombreux périphériques différents soient configurés pour autoriser le multitâche, il existe toujours un processus interne qui crée une hiérarchie de fonctions. Pour que certaines fonctions puissent avoir lieu, d'autres doivent avoir été effectuées auparavant. Bien que l'utilisateur final s'aperçoive que toutes les fonctions peuvent sembler se dérouler en même temps, ce n'est pas nécessairement le cas.
Une condition de concurrence critique est créée lorsque deux ou plusieurs opérations rivalisent pour atteindre l'achèvement avant les autres opérations. Lorsque toutes les fonctions individuelles sont correctement organisées, cela conduit à une exécution réussie de toutes les fonctions dans les délais. Cependant, si la séquence des opérations est déséquilibrée, cela crée un goulot d'étranglement. Dans le pire des cas, la situation de concurrence critique empêchera le système de continuer à traiter toutes les fonctions dans l'ordre actuellement engagé. Étant donné que le système peut avoir besoin de traiter la cinquième fonction de la chaîne avant que les première et deuxième fonctions puissent être complétées, la chaîne entière doit être abandonnée et rétablie dans le bon ordre.
Un exemple courant de condition de concurrence critique concerne le traitement des données. Si un système reçoit des commandes pour lire les données existantes lors de l'écriture de nouvelles données, cela peut entraîner un conflit entraînant une fermeture du système. Le système peut afficher un type de message d'erreur si la quantité de données en cours de traitement pèse indûment sur les ressources disponibles, ou bien le système peut simplement s'arrêter. Lorsque cela se produit, il est généralement conseillé de redémarrer le système et de recommencer la séquence. Si la quantité de données en cours de traitement est considérable, il peut être préférable de permettre l'assimilation des nouvelles données avant de tenter de lire l'une quelconque des données actuellement stockées.
De nombreux systèmes évitent le risque de situation critique en fixant des priorités dans les protocoles opérationnels. Les priorités sont établies pour bien fonctionner dans les limites des capacités du système et limiter ainsi la capacité d'une situation de concurrence à se développer.