当前位置:编程学习 > C#/ASP.NET >>

关于lock的一个问题


public void test(int i)
{
    lock(this)
    {
         if(i>10)
         {
              i--;
              test(i);
         }
    }
}


问题是调用此方法时i>0是否会引起死锁。
网上的解答是不会,因为i是值类型,每次改变的是i的一个副本。如果参数是一个引用型变量就会发生死锁

但是我总觉得无论是什么类型变量都不会死锁,毕竟只lock了一个变量,不具备死锁的条件。而且对于上面的解答为什么会涉及到变量i呢?我认为应该和他没关系才是。

希望各位能帮忙分析下这个就竟是什么样子吧,谢谢~ --------------------编程问答--------------------
虽然该例子非常的不好,但它不会死锁。不会死锁的原因跟i一点关系都没有,它是由于:同一线程不阻止的情况下多次调用Monitor.Enter是合法的
http://msdn.microsoft.com/zh-cn/library/system.threading.monitor.enter.aspx

lock(this)内部用了Monitor.Enter(this)和Monitor.Exit(this)。


--------------------编程问答-------------------- 目前不了解你说的是什么意思。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,