zoukankan      html  css  js  c++  java
  • c# 多线程解决死锁问题

    可使用:Monitor.TryEnter()方法。虽然这种方法可以解决死锁问题,但是最好还是不要出现死锁这种情况。如果出现死锁这种情况,就说明代码有问题啊。还是在else里面加个日志记录下吧,然后再解决。以下代码来自互联网

        class Program
        {
            static void Main(string[] args)
            {
                object lock1 = new object();
                object lock2 = new object();
    
                new Thread(() => LockTooMuch(lock1, lock2)).Start();
    
                lock (lock2)
                {
                    Thread.Sleep(1000);
                    Console.WriteLine("Monitor.TryEnter allows not to get stuck,returning false after a specified timeout is elapsed");
                    if (Monitor.TryEnter(lock1, TimeSpan.FromSeconds(5)))
                    {
                        Console.WriteLine("Acquired a protected resource succesfully");
                    }
                    else
                    {
                        Console.WriteLine("Timeout acquiring a resource!");
                    }
                }
                //new Thread(() => LockTooMuch(lock1, lock2)).Start();
    
                //Console.WriteLine("----------------------------------");
                //lock (lock2)
                //{
                //    Console.WriteLine("This will be a deadlock!");
                //    Thread.Sleep(1000);
                //    lock (lock1)
                //    {
                //        Console.WriteLine("Acquired a protected resource succesfully");
                //    }
                //}
    
                Console.ReadKey();
            }
    
            static void LockTooMuch(object lock1, object lock2)
            {
                lock (lock1)
                {
                    Thread.Sleep(1000);
                    lock (lock2) ;
                }
            }
        }
  • 相关阅读:
    JQ实现选项卡(jQuery原型插件扩展)
    jQuery的实现原理和核心
    fetch 关于七牛的content-type 的问题
    npm 安装远程包(github的)
    关于dvajs里effects的call和put
    babel6 的 export default bug
    regeneratorRuntime未定义
    babel 解构赋值无法问题
    npm 安装本地包
    datable-默认参数列表
  • 原文地址:https://www.cnblogs.com/subendong/p/11826347.html
Copyright © 2011-2022 走看看