Junior — Middle
Que exactement est transmis ou utilisé dans le mécanisme de verrouillage (lock) en programmation multithread?
sobes.tech IA
Réponse de l'IA
Dans le mécanisme de verrouillage (lock) en programmation multithread, un objet ou un primitive de synchronisation est utilisé pour assurer un accès exclusif à une ressource partagée. Lorsqu’un thread acquiert le verrou, les autres threads tentant de l’acquérir attendent qu’il soit libéré.
Autrement dit, sous "lock", on passe ou on utilise :
- L’état du verrou (occupé/libre).
- Le mécanisme d’attente (par exemple, une file d’attente de threads en attente de libération).
En C#, le mot-clé lock fonctionne avec un objet qui sert de marqueur de verrou. Exemple :
private readonly object _lockObj = new object();
void CriticalSection()
{
lock(_lockObj)
{
// Code qui doit être exécuté par un seul thread à la fois
}
}
Ici, dans lock, une référence à l’objet _lockObj est passée, qui est utilisée pour gérer l’accès. En interne, CLR utilise cet objet pour contrôler l’état du verrou.