using System;
using System.Threading;
class Demo
{
static int Count;
static object Locker = new object();
static void Main()
{
Thread ob = new Thread(Run);
ob.Name = "first ";
Thread ob1 = new Thread(Run);
ob1.Name = "second ";
ob.Start();
ob1.Start();
ob.Join();
ob1.Join();
}
public static void Run()
{
if (Monitor.TryEnter(Locker))
{
do
{
Thread.Sleep(100);
Console.WriteLine(Thread.CurrentThread.Name + " вошел " + Count);
Count++;
} while (Count < 10);
Console.WriteLine(Thread.CurrentThread.Name + " закончил свою работу");
Count = 0;
Monitor.Exit(Locker);
}
else
{
Console.WriteLine("Не вошел " + Thread.CurrentThread.Name);
}
}
}
Собственно, один из потоков блокируется объектом object, но когда этот поток заканчивает свою работу, то все процесс прекращается. Почему второй поток не входит в критическую область?