Junior — Middle
Quelle est la différence entre les mécanismes de verrouillage Lock et Monitor dans le contexte de la gestion des threads?
sobes.tech IA
Réponse de l'IA
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 — для более тонкого управления потоками.