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

}
}
当调用test方法时,如果i>10,是否会产生死锁,为什么,请高手指点

解决方案 »

  1.   

    i=11的时候,资源被lock,执行到if里test(10)递归调用本身,但是资源是被lock的,test(10)执行到lock(this),一个在等待被调用函数结束,一个在等待调用者释放资源,这样就死锁了吧,个人见解。
      

  2.   

    不会的
    http://blog.csdn.net/xuzhiqiang1010/article/details/4987824
      

  3.   

    不会死锁,都是在一个线程里面的递归调用,都持有lock,所以都可以操作。
      

  4.   

    帮忙解决一下这问题啊.谢谢.
    http://topic.csdn.net/u/20120323/10/a25e7ddc-f5d8-4154-9b08-979967a7b168.html?seed=234360837&r=77997543#r_77997543
      

  5.   

    2楼那篇文章对lock的解释有些问题
    其实lock的本质应该这样的,就是把一个“对象”(这并不是指C#中类的实例对象,而是广义的对象)变成一把锁,同一时间只有一个线程可以拿到这个锁,至于拿到锁的时候你做什么都是不管的。其它线程如果想拿锁就要一直等待,等待手里握着锁的线程放掉锁。