Monitor
Monitor - низкоуровневый API для lock. Enter и Exit - пара; Wait и Pulse - ожидание и сигнал.
Синтаксис
Monitor.Enter(gate);
Monitor.Exit(gate);
Пример
Давайте захватим объект вручную:
using System;
using System.Threading;
class Program
{
static void Main()
{
var gate = new object();
Monitor.Enter(gate);
Console.WriteLine("held");
Monitor.Exit(gate);
}
}
Результат выполнения кода:
"held"
Пример
Давайте покажем, что lock эквивалентен Enter и Exit:
using System;
using System.Threading;
class Program
{
static void Main()
{
var gate = new object();
lock (gate)
{
Console.WriteLine("ok");
}
}
}
Результат выполнения кода:
"ok"