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 для более сложных сценариев.