2010-06-15 49 views
1

是否有任何技術或工具可用於在運行時檢測到這種類型的死鎖?檢測陳舊的互斥體

圖片這在工作線程(其中一個數,通常爲4-6)

try 
    WaitForSingleObject(myMutex); 
    DoSTuffThatMightCauseAnException; 
except 
    ReleaseMutex(myMutex); 
end; 

或更一般地是有一個設計圖案,以避免這些種類的錯誤?

我編寫上面的代碼中的小HOUS更長的黑客運行

+0

什麼是錯誤? – allenporter 2010-06-15 06:11:55

+0

@allenporter:只有在發生異常時纔會釋放互斥鎖,因此正常執行會導致互斥鎖未被釋放 – sum1stolemyname 2010-06-15 06:14:58

回答

6

更好的編碼風格是使用try /終於而是試圖/除互斥釋放(或任何其他類型的資源釋放後, ):即:

try 
    WaitForSingleObject(myMutex); 
    try 
    DoSTuffThatMightCauseAnException; 
    finally 
    ReleaseMutex(myMutex); 
    end; 
except 
    ... 
end;