Почему не происходит deadlock? - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Сижу и не могу никак въехать. Вот сурс http://theburningmonk.com/2010/03/thread-safe-enumeration-in-csharp/ а вот код на его основе
Листинг программы
  1. SafeList<int> l = new SafeList<int>();
  2. l.Add(3);
  3. l.Add(4);
  4. l.Add(5);
  5. foreach (int item in l) {
  6. l.Remove(1);
  7. }
Если внимательно посмотреть на сурс, то при входе в foreach _lock захватывается, а при удалении объекта внутри foreach опять же принимается попытка его захватить, причём она оканчивается успехом. Почему не происходит deadlock??

Решение задачи: «Почему не происходит deadlock?»

textual
Листинг программы
  1. Monitor.Enter(_lock);
  2. Monitor.Enter(_lock);
  3. Console.WriteLine("Всё работает!");
  4. Monitor.Exit(_lock);
  5. Monitor.Exit(_lock);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.429 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы