Looking for c# Keywords? Try Ask4Keywords

C# Language Простое использование


пример

Общее использование lock - критический раздел.

В следующем примере ReserveRoom должен быть вызван из разных потоков. Синхронизация с lock - это самый простой способ предотвратить состояние гонки здесь. Тело метода окружено lock который гарантирует, что два или более потока не могут выполнить его одновременно.

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
        }
    }
}

Если поток достигает lock блока, а другой поток работает внутри него, первый будет ждать другого, чтобы выйти из блока.

Лучшая практика заключается в определении частного объекта для блокировки или частной переменной статического объекта для защиты данных, общих для всех экземпляров.