4
다음 프로그램의 지문 : 독점 잠금을 얻을 수없는 이유는 무엇입니까?
Entered 3
Entered 4
Wait for Exited messages
Exited 3
Exited 4
은 자원에 대한 배타적 잠금을 획득 할 수 있다는 것을 의미한다. 왜?
public class Worker
{
public void DoIt(object resource)
{
Monitor.Enter(resource);
Console.WriteLine("Entered " + Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(3000);
Monitor.Exit(resource);
Console.WriteLine("Exited " + Thread.CurrentThread.ManagedThreadId);
}
}
class Program
{
struct Resource
{
public int A;
public int B;
}
static void Main(string[] args)
{
Resource resource;
resource.A = 0;
resource.B = 1;
var a = new Worker();
var b = new Worker();
var t1 = new Thread(() => a.DoIt(resource));
var t2 = new Thread(() => b.DoIt(resource));
t1.Start();
t2.Start();
Console.WriteLine("Wait for Exited messages");
Console.ReadLine();
}
}