Q
C#線程死鎖
-1
A
回答
0
這不是C#特有的。你應該總是以一些明確的順序獲得。 有一個在互聯網很多信息,例如,您可能需要在這裏看看 http://www.javamex.com/tutorials/threads/deadlock.shtml
2
死鎖通常發生在有幾個可能性:
您正在使用多個鎖,而不是鎖定/在解鎖他們正確的順序。因此,您可能會創建一個線程持有鎖A並且需要鎖B的情況,而另一個線程需要鎖A並持有鎖B.這兩種情況都不能繼續。這是因爲每個線程都以不同的順序鎖定。
使用可重入鎖並鎖定的次數超過了解鎖次數時。請參閱此相關的問題:當使用
Monitor.Wait/Monitor.Pulse
作爲信令機制,但這必須調用Wait
線程不設法到達由另一個線程稱爲Pulse
和信號丟失時的調用why does the following code result in deadlock。您可以使用
AutoResetEvent
作爲持續信號。您有一個工作線程輪詢一個標誌,以知道何時停止。主線程設置標誌並嘗試加入工作線程,但忘記了標誌
volatile
。
相關問題
- 1. C++線程死鎖
- 2. Ruby線程死鎖
- 3. Python線程死鎖
- 4. Delphi線程死鎖
- 5. Java,線程死鎖?
- 6. 多線程死鎖
- 7. Java線程死鎖
- 8. 在C#中處理線程(死鎖)
- 9. C#中的線程死鎖例子#
- 10. 產卵線程時死鎖?
- 11. c3po助手線程死鎖
- 12. MemoryStream.CopyTo()導致線程死鎖
- 13. 死鎖在Python線程
- 14. 線程死鎖異步
- 15. 死鎖的線程java
- 16. 多線程中的死鎖
- 17. 多線程和死鎖
- 18. 線程池死鎖與Task.Result
- 19. 死鎖線程檢查
- 20. Python線程和鎖定:死鎖
- 21. 在C自制線程池的多線程死鎖#
- 22. C多線程死鎖的線程事件
- 23. C++線程死鎖互斥鎖異常終止
- 24. 兩個線程程序防止死鎖
- 25. C#不死鎖
- 26. ISAPI擴展TerminateExtension線程死鎖
- 27. HTMLUNIT v。2.15錯誤線程死鎖
- 28. 線程中的死鎖情況?
- 29. 線程關閉導致的死鎖
- 30. 死鎖上奇怪的線程轉儲
只有一個很好的工具,在你的耳朵之間。檢測它並不難。 – 2012-01-18 05:18:40
避免死鎖的最好方法是不要使用鎖!如果沒有,請謹慎使用!有一些適度的幫助規則,比如總是以相同的順序獲取。 – 2012-01-18 05:22:39
[優先反演](http://en.wikipedia.org/wiki/Priority_inversion)也應該在設計中考慮。 – 2012-01-18 09:29:33