如果在運行時懷疑python線程之間存在死鎖,有什麼方法可以解決它而不會終止整個過程?如何實時解決線程死鎖?
例如,如果少數線程比他們應該花費的時間更長,資源管理器可能會懷疑其中一些線程已經死鎖。當然,它應該在未來的代碼中進行調試,有沒有一種乾淨的解決方案可以立即使用(在運行時),可能會殺死特定的線程以便其他人可以恢復?
編輯:我正在考慮添加一些睡眠檢測循環(在它自己的線程中)睡一會兒,然後檢查所有正在運行的線程,如果其中一些看起來很慢,它會殺死最不重要的其中之一。在什麼時候線程被懷疑是死鎖,哪個線程最不重要,當然是由死鎖檢測循環程序員定義的。
顯然,它不會捕獲所有問題(最明顯的是,如果死鎖檢測線程本身已死鎖)。這個想法並不是找到一個數學上完美的解決方案(當然,這不是編寫死鎖的代碼)。相反,我想在一些現實案例中部分解決問題。
編寫無法死鎖的代碼。 – Fredrik
@Fredrik當然,我完全同意。但是在一個由多人編寫的大型代碼庫中很難快速實現這一點,而這些代碼有時會被懷疑陷入僵局。隨着時間的推移將讀取/修復/重新設計代碼與一些可能改善應用程序行爲的立即自動死鎖解決方案結合起來可能是值得的。 – max
如果說主線程死鎖,你的策略是什麼? – Natecat