Junior — Middle
114
Какое различие существует между механизмами блокировки Lock и Monitor в контексте управления потоками?
Answer from AI
sobes.tech AI
lock в C# — это синтаксический сахар над классом Monitor.
Основные различия:
lockавтоматически вызываетMonitor.Enterв начале блока иMonitor.Exitв конце, обеспечивая корректное освобождение блокировки даже при исключениях.Monitorпредоставляет более низкоуровневый API с дополнительными возможностями, например,Monitor.TryEnterдля попытки захвата блокировки без ожидания, а также методы для ожидания и уведомления (Wait,Pulse,PulseAll).
Пример использования lock:
private readonly object _sync = new object();
lock (_sync)
{
// критическая секция
}
Эквивалент с Monitor:
Monitor.Enter(_sync);
try
{
// критическая секция
}
finally
{
Monitor.Exit(_sync);
}
Таким образом, lock удобнее и безопаснее для большинства случаев, а Monitor — для более тонкого управления потоками.