C# 中的死鎖和飢餓


當一個資源被一個執行緒鎖住,而另一個執行緒在同一時間也需要該資源時,便會發生死鎖。這個問題多發於多處理系統。

當兩個或多個執行緒等待另一個執行緒擁有的資源時,便會發生死鎖。下面是一個示例:

執行緒一執行緒二
獲取鎖 P獲取鎖 Q
請求鎖 Q請求鎖 P

執行緒一無法獲取鎖 Q,因為它屬於執行緒二。同理,執行緒二也無法獲取鎖 P,因為它的原始所有者是執行緒一。

如果存在三個執行緒和三個公共鎖,則死鎖也可能形成一個三向死鎖。它同樣可以形成四向、五向以及其他死鎖。

飢餓是一種線上程程式中一個或多個可執行執行緒的永久阻塞。

更新於: 22-06-2020

1K+ 人氣

開啟您職業生涯

完成課程獲得認證

開始
廣告