Sobes.tech
Junior
138
questionbank

Какова цель ключевого слова lock в C#?

Ответ от нейросети

sobes.tech AI

Ключевое слово lock используется для обеспечения потокобезопасности путем создания критической секции.

Его основные цели:

  • Блокировка доступа: Гарантирует, что только один поток может выполнять код внутри блока lock в данный момент времени.
  • Защита общих ресурсов: Предотвращает состояние гонки при одновременном доступе нескольких потоков к общим данным или ресурсам, таким как поля класса, коллекции и т.д.
  • Синхронизация потоков: Используется для организации порядка выполнения операций в многопоточных сценариях.

Пример использования:

private static readonly object _lockObject = new object(); // Объект для блокировки

public void UpdateCounter()
{
    // Начало критической секции
    lock (_lockObject)
    {
        // Код внутри этого блока может выполняться только одним потоком одновременно
        counter++;
    }
    // Конец критической секции
}

Важно использовать специализированный объект (_lockObject в примере) для блокировки, а не this или typeof(TypeName), чтобы избежать потенциальных проблем с взаимоблокировками. Рекомендуется использовать объекты типа object или System.Threading.ReaderWriterLockSlim для более сложных сценариев.