C# LanguageDéclaration de verrouillage


Syntaxe

  • verrouiller (obj) {}

Remarques

À l'aide de l'instruction de lock , vous pouvez contrôler l'accès des différents threads au code dans le bloc de code. Il est couramment utilisé pour empêcher les conditions de concurrence, par exemple, la lecture et la suppression d'éléments multiples dans une collection. Comme le verrouillage oblige les threads à attendre que d'autres threads quittent un bloc de code, cela peut entraîner des retards qui pourraient être résolus avec d'autres méthodes de synchronisation.

MSDN

Le mot-clé lock marque un bloc d'instructions en tant que section critique en obtenant le verrou d'exclusion mutuelle pour un objet donné, en exécutant une instruction, puis en libérant le verrou.

Le mot-clé lock garantit qu'un thread n'entre pas dans une section critique du code alors qu'un autre thread se trouve dans la section critique. Si un autre thread tente d'entrer un code verrouillé, il attendra, bloquera, jusqu'à ce que l'objet soit libéré.

La meilleure pratique consiste à définir un objet privé à verrouiller ou une variable d'objet statique privée pour protéger les données communes à toutes les instances.


Dans C # 5.0 et versions ultérieures, la déclaration de lock est équivalente à:

bool lockTaken = false;
try 
{
    System.Threading.Monitor.Enter(refObject, ref lockTaken);
    // code 
}
finally 
{
    if (lockTaken)
        System.Threading.Monitor.Exit(refObject);
}

Pour C # 4.0 et les versions antérieures, l'instruction de lock est équivalente à:

System.Threading.Monitor.Enter(refObject);
try 
{
    // code
}
finally 
{
     System.Threading.Monitor.Exit(refObject);
}

Déclaration de verrouillage Exemples Liés