关于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#