日期:2014-05-17  浏览次数:20699 次

lock 的一个问题,求解答!
对于只有一个线程中,如果对一个对象进行两次lock,会不会导致死锁
例如

    class Program
    {
        private static readonly object obj = new object();
        static void Main(string[] args)
        {
            lock (obj)//获取obj锁
            {
                lock (obj)//获取obj锁失败?以下代码不会执行?但实际上是可以执行的
                {
                    Console.WriteLine("hello");
                }
            }
            Console.Read();
        }

    }

我以为在第二个lock(obj)中的代码块会无限等待,这里会死锁,但实际不是,可以输出hello的
这处有点不太理解,求解释!
lock 线程 死锁

------解决方案--------------------
lock是指多线程之前的访问控制,同一线程没有lock的概念。
------解决方案--------------------
楼主还没弄清楚lock的用法吧
------解决方案--------------------
lock防止并发操作,你在单线程里面。只有一个一个线程访问,所以不需要lock。