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é
locken 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.