Sobes.tech
Junior — Middle

Comment les systèmes gèrent-ils la situation lorsque plusieurs threads accèdent simultanément à une variable ou un état partagé?

sobes.tech IA

Réponse de l'IA

Lorsque plusieurs threads accèdent simultanément à une variable ou un état partagé, un problème de condition de course (race condition) survient. Pour éviter des données incorrectes et assurer la cohérence, on utilise des mécanismes de synchronisation :

  • Verrous (lock, mutex) — permettent à un thread d’avoir un accès exclusif à la ressource, les autres attendent.
  • Moniteurs (Monitor.Enter/Exit en C#) — mécanisme de verrouillage plus flexible.
  • Mot-clé lock en C# — syntaxe simplifiée pour les moniteurs.
  • Opérations atomiques (Interlocked) — pour des opérations simples sans verrou complet.
  • Collections concurrentes — structures de données sûres pour l’accès par plusieurs threads.

Exemple avec lock en C# :

private readonly object _sync = new object();
private int _counter = 0;

public void Increment()
{
    lock(_sync)
    {
        _counter++;
    }
}

Cette approche garantit qu’un seul thread modifie la variable à la fois.