C# Language Usage simple


Exemple

L'utilisation commune du lock est une section critique.

Dans l'exemple suivant, ReserveRoom doit être appelé à partir de différents threads. La synchronisation avec le lock est le moyen le plus simple de prévenir les conditions de course. Le corps de la méthode est entouré d'un lock qui garantit que deux threads ou plus ne peuvent pas l'exécuter simultanément.

public class Hotel
{
    private readonly object _roomLock = new object();

    public void ReserveRoom(int roomNumber)
    {
        // lock keyword ensures that only one thread executes critical section at once
        // in this case, reserves a hotel room of given number
        // preventing double bookings
        lock (_roomLock)
        {
            // reserve room logic goes here
        }
    }
}

Si un thread atteint lock bloc verrouillé pendant qu'un autre thread s'exécute dans celui-ci, le premier attendra un autre pour quitter le bloc.

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.