我读过几篇文章和帖子说lock(this)
,都是不好的做法,因为另一个线程可能会锁定同一个键并导致死锁lock(typeof(MyType))
。lock("a string")
为了理解这个问题,我试图创建一些示例代码来说明死锁,但一直无法解决这个问题。
有人可以写一段简明的代码来说明这个经典问题吗?请保持简短,我只能以较小的块消化代码。
编辑: 我认为 lassevk 总结得很好;真正的问题是你失去了对锁的控制。一旦发生这种情况,您将无法控制调用锁的顺序,并且您正在允许潜在的死锁情况。
lock(this)
, lock(typeof(MyType))
, 等等都是您选择了无法控制的锁的情况。