Как работает оператор lock в данном коде?
internal class Program
{
private static Object syncObject = new Object();
private static void Write()
{
lock (syncObject)
{
Console.WriteLine("test");
}
}
static void Main(string[] args)
{
lock (syncObject)
{
Write();
}
}
}
Я думал, что данный код просто не даст выполниться методу Write() но в итоге вывелась надпись test. Почему так происходит и как здесь работает оператор lock?