// DeadLockSample.cs
// 分析一下为什么会发生死锁?
using System;
using System.Threading;
public class Test
{
static readonly object firstLock = new object();
static readonly object secondLock = new object();
static void Main()
{
new Thread(new ThreadStart(ThreadJob)).Start();
// Wait until we're fairly sure the other thread
// has grabbed firstLock
Thread.Sleep(500);
Console.WriteLine ("Locking secondLock");
lock (secondLock)
{
Console.WriteLine ("Locked secondLock");
Console.WriteLine ("Locking firstLock");
lock (firstLock)
{
Console.WriteLine ("Locked firstLock");
}
Console.WriteLine ("Released firstLock");
}
Console.WriteLine("Released secondLock");
}
static void ThreadJob()
{
Console.WriteLine ("\t\t\t\tLocking firstLock");
lock (firstLock)
{
Console.WriteLine("\t\t\t\tLocked firstLock");
// Wait until we're fairly sure the first thread
// has grabbed secondLock
Thread.Sleep(1000);
Console.WriteLine("\t\t\t\tLocking secondLock");
lock (secondLock)
{
Console.WriteLine("\t\t\t\tLocked secondLock");
}
Console.WriteLine ("\t\t\t\tReleased secondLock");
}
Console.WriteLine("\t\t\t\tReleased firstLock");
| 对此文章发表了评论 |

