Это из MSDN: Ключевое слово блокировки гарантирует, что один поток не вводит критический раздел кода, а другой поток находится в критическом разделе.
Значит ли критический раздел такой же, как критический раздел?
Или это означает: Ключевое слово блокировки гарантирует, что один поток не вводит любой критический раздел, защищенный объектом кода, а другой поток находится в любом критическом разделе, защищенном тем же объектом.
class Program
{
static void Main(string[] args)
{
TestDifferentCriticalSections();
Console.ReadLine();
}
private static void TestDifferentCriticalSections()
{
Test lo = new Test();
Thread t1 = new Thread(() =>
{
lo.MethodA();
});
t1.Start();
Thread t2 = new Thread(() =>
{
lo.MethodB();
});
t2.Start();
}
}
public class Test
{
private object obj = new object();
public Test()
{ }
public void MethodA()
{
lock (obj)
{
for (int i = 0; i < 5; i++)
{
Thread.Sleep(500);
Console.WriteLine("A");
}
}
}
public void MethodB()
{
lock (obj)
{
for (int i = 0; i < 5; i++)
{
Thread.Sleep(500);
Console.WriteLine("B");
}
}
}
}