Почему не происходит deadlock? - C#
Формулировка задачи:
Здравствуйте.
Сижу и не могу никак въехать.
Вот сурс http://theburningmonk.com/2010/03/thread-safe-enumeration-in-csharp/
а вот код на его основе
Если внимательно посмотреть на сурс, то при входе в foreach _lock захватывается, а при удалении объекта внутри foreach опять же принимается попытка его захватить, причём она оканчивается успехом.
Почему не происходит deadlock??
Листинг программы
- SafeList<int> l = new SafeList<int>();
- l.Add(3);
- l.Add(4);
- l.Add(5);
- foreach (int item in l) {
- l.Remove(1);
- }
Решение задачи: «Почему не происходит deadlock?»
textual
Листинг программы
- Monitor.Enter(_lock);
- Monitor.Enter(_lock);
- Console.WriteLine("Всё работает!");
- Monitor.Exit(_lock);
- Monitor.Exit(_lock);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д