Deadlock sample in .net?

后端 未结 5 1392
清歌不尽
清歌不尽 2020-12-16 18:07

Can anybody give a simple Deadlock sample code in c# ? And please tell the simplest way to find deadlock in your C# code sample. (May be the tool which will detect the dead

5条回答
  •  眼角桃花
    2020-12-16 18:35

    This is a typical code to create a deadlock in C# code. Checkout this MSDN article: http://msdn.microsoft.com/en-us/magazine/cc188793.aspx

    using System;
    
    using System.Threading;
    
    
    public class Simple {
    
        static object A = new object();
    
        static object B = new object();
    
    
        static void MethodA()
        {
            Console.WriteLine("Inside methodA");
            lock (A)
            {
                Console.WriteLine("MethodA: Inside LockA and Trying to enter LockB");
                Thread.Sleep(5000);           
                lock (B)
                {
                    Console.WriteLine("MethodA: inside LockA and inside LockB");
                    Thread.Sleep(5000);
                }
                Console.WriteLine("MethodA: inside LockA and outside LockB");
            }
            Console.WriteLine("MethodA: outside LockA and outside LockB");
        }
    
        static void MethodB()
        {
            Console.WriteLine("Inside methodB");
            lock (B)
            {
                Console.WriteLine("methodB: Inside LockB");
                Thread.Sleep(5000);
                lock (A)
                {
                    Console.WriteLine("methodB: inside LockB and inside LockA");
                    Thread.Sleep(5000);
                }
                Console.WriteLine("methodB: inside LockB and outside LockA");
            }
            Console.WriteLine("methodB: outside LockB and outside LockA");
        }
    
        public static void Main(String[] args)
        {
    
            Thread Thread1 = new Thread(MethodA);
            Thread Thread2 = new Thread(MethodB);
            Thread1.Start();
            Thread2.Start();
            Console.WriteLine("enter.....");
            Console.ReadLine();
    
        }
    }
    

提交回复
热议问题