我讀過幾篇文章和文章,說lock(this)
,lock(typeof(MyType))
,lock("a string")
都是不好的做法,因爲另一個線程可能鎖定相同的密鑰並導致死鎖。爲了理解這個問題,我試圖創建一些示例代碼來說明僵局,但一直未能圍繞這個問題進行解決。通過使用鎖來說明死鎖的示例代碼(this)
有人可以寫一段簡短的代碼來說明這個經典問題嗎?請保持簡短,我只能以更小的塊來消化代碼。
編輯: 我認爲lassevk總結得很好;真正的問題是你失去了對鎖的控制。一旦發生這種情況,您無法控制調用鎖的順序,並且允許潛在的死鎖情況。
lock(this)
,lock(typeof(MyType))
等都是你選擇了一個無法控制的鎖。
哈哈,我寫了完全相同的樣本,而你發佈它:)但我選擇了長和int – Maghis 2009-05-21 17:41:43