Как работает оператор 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?


Ответы (0 шт):