关于死锁 public void test(int i){lock(this){ if(i>10){ i--; test(i);} }}当调用test方法时,如果i>10,是否会产生死锁,为什么,请高手指点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 i=11的时候,资源被lock,执行到if里test(10)递归调用本身,但是资源是被lock的,test(10)执行到lock(this),一个在等待被调用函数结束,一个在等待调用者释放资源,这样就死锁了吧,个人见解。 不会的http://blog.csdn.net/xuzhiqiang1010/article/details/4987824 不会死锁,都是在一个线程里面的递归调用,都持有lock,所以都可以操作。 帮忙解决一下这问题啊.谢谢.http://topic.csdn.net/u/20120323/10/a25e7ddc-f5d8-4154-9b08-979967a7b168.html?seed=234360837&r=77997543#r_77997543 2楼那篇文章对lock的解释有些问题其实lock的本质应该这样的,就是把一个“对象”(这并不是指C#中类的实例对象,而是广义的对象)变成一把锁,同一时间只有一个线程可以拿到这个锁,至于拿到锁的时候你做什么都是不管的。其它线程如果想拿锁就要一直等待,等待手里握着锁的线程放掉锁。 c# 中 DataTable.Select 模糊查询问题 无奈了 求高手帮忙 按要求写个算法 求助:VS2005解决方案如何打包成安装程序? 在C#中怎样使用XML控制access数据库的输出样式? 使用listView1控件需要控制项与项(ListViewItem)之间的间隔距离 调试的时候如何可以任何输入一个变量,看其值? C++ DLL函数返回结构体指针,如何在C#中转换使用啊,高手看看 请问:如何编写端口映射 数据显示问题 能不能够提供-用c#编写串口方面的文章资源!! 在C#中,如何将struct转为IntPtr? C# winform treeview的子节点中可以添加控件么?
http://blog.csdn.net/xuzhiqiang1010/article/details/4987824
http://topic.csdn.net/u/20120323/10/a25e7ddc-f5d8-4154-9b08-979967a7b168.html?seed=234360837&r=77997543#r_77997543
其实lock的本质应该这样的,就是把一个“对象”(这并不是指C#中类的实例对象,而是广义的对象)变成一把锁,同一时间只有一个线程可以拿到这个锁,至于拿到锁的时候你做什么都是不管的。其它线程如果想拿锁就要一直等待,等待手里握着锁的线程放掉锁。