Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csSpCcMn 364 of 509 menu
◀ ▶

Monitor Enter и Exit в C#

Оператор lock компилируется в Monitor.Enter и Monitor.Exit на объекте-синхронизаторе. Те же методы вызывают явно, когда вход и выход нужно расписать самим.

Метод Exit обязательно вызывают в finally: при исключении внутри критической секции монитор иначе останется занятым и другие потоки зависнут навсегда.

Войдём в монитор и выведем метку из защищённой секции. Выход стоит в finally, чтобы монитор освободился даже при ошибке внутри секции:

object gate = new(); Monitor.Enter(gate); try { Console.WriteLine("in"); // выведет "in" } finally { Monitor.Exit(gate); }

Войдите в монитор общего объекта, выведите в консоль строку "held" и гарантированно освободите монитор после вывода.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить