Встречается на собеседованиях • сегодня

Что такое Lock

lock в C# используется для синхронизации доступа к общему ресурсу в многопоточных приложениях, предотвращая race condition. Это ключевое слово обеспечивает эксклюзивную блокировку объекта на время выполнения критической секции кода.

Пример:

csharp
private static readonly object _lockObj = new object();
private static int _counter = 0;

public void Increment()
{
    lock (_lockObj)
    {
        _counter++;
    }
}

Важные нюансы:

  1. Объект для блокировки должен быть readonly и ссылочного типа (обычно object)
  2. Избегайте блокировки this, Type или публичных объектов
  3. Не выполняйте долгие операции внутри lock
  4. Используйте Monitor.TryEnter для таймаутов

Deadlock может возникнуть при неправильном порядке блокировок.

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы