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

Что такое DeadLock

DeadLock (взаимная блокировка) возникает, когда два или более потока бесконечно ожидают ресурсы, захваченные друг другом.

Пример:

csharp
object lock1 = new object();
object lock2 = new object();

Thread t1 = new Thread(() => {
    lock (lock1) {
        Thread.Sleep(100);
        lock (lock2) { } // Ждёт, пока t2 освободит lock2
    }
});

Thread t2 = new Thread(() => {
lock (lock2) {
Thread.Sleep(100);
lock (lock1) { } // Ждёт, пока t1 освободит lock1
}
});

t1.Start();
t2.Start();

text

**Как избежать:**  
- Упорядочивание блокировок (всегда захватывать `lock1` перед `lock2`).  
- Использование `Monitor.TryEnter` с таймаутом.  
- Минимизация времени удержания блокировок.  
- Использование `async/await` вместо блокирующих вызовов.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

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