我读过几篇文章和文章,说lock(this)
,lock(typeof(MyType))
,lock("a string")
都是不好的做法,因为另一个线程可能锁定相同的密钥并导致死锁。为了理解这个问题,我试图创建一些示例代码来说明僵局,但一直未能围绕这个问题进行解决。通过使用锁来说明死锁的示例代码(this)
有人可以写一段简短的代码来说明这个经典问题吗?请保持简短,我只能以更小的块来消化代码。
编辑: 我认为lassevk总结得很好;真正的问题是你失去了对锁的控制。一旦发生这种情况,您无法控制调用锁的顺序,并且允许潜在的死锁情况。
lock(this)
,lock(typeof(MyType))
等都是你选择了一个无法控制的锁。
哈哈,我写了完全相同的样本,而你发布它:)但我选择了长和int – Maghis 2009-05-21 17:41:43