當一個資源被一個線程鎖定并且同時另一個線程需要該資源時,就會發(fā)生死鎖。此問題在多處理系統(tǒng)中經(jīng)常發(fā)生。
當兩個或多個線程等待屬于另一個線程的資源時,可能會發(fā)生此問題。這是一個示例 –
線程一 | 線程二 |
---|---|
獲取鎖定 P | 獲取鎖定 Q |
請求鎖Q | 請求鎖P |
線程一不會獲得鎖Q,因為它屬于到線程二。同樣,線程二也不會獲得鎖 P,因為它的原始所有者是線程一。
死鎖也可以是三向死鎖,如果三個線程和三個鎖是公共的,就會發(fā)生這種情況。同樣,四路、五路和其他死鎖也可能發(fā)生。
饑餓是多線程應用程序中一個或多個可運行線程的永久阻塞。
以上就是C# 中的死鎖和饑餓的詳細內(nèi)容,更多請關注www.xfxf.net其它相關文章!