using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime; using System.Runtime.CompilerServices; using System.Security; using System.Text; using System.Threading; public class MainClass { private static object deadlockA = new object(); private static object deadlockB = new object(); public static void Main() { lock (deadlockA) { ThreadPool.QueueUserWorkItem(delegate { lock (deadlockB) { Console.WriteLine("A"); lock (deadlockA) { Console.WriteLine("B"); } } }); lock (deadlockB) { Console.WriteLine("Main: got b"); } } } }
Main: got b A B