C# 中的死鎖和飢餓
當執行緒鎖定某一資源而同時有另一執行緒正在請求該資源時,就會發生死鎖。這個問題在多處理系統中頻繁出現。
當兩個或多個執行緒等待屬於另一個執行緒的資源時,死鎖就會發生。下面是一個示例 -
| 執行緒一 | 執行緒二 |
|---|---|
| 獲取鎖 P | 獲取鎖 Q |
| 請求鎖 Q | 請求鎖 P |
執行緒一無法獲得鎖 Q 因為它屬於執行緒二。同樣的,執行緒二也無法獲得鎖 P,因為它最初歸屬於執行緒一。
死鎖還可以是三方死鎖,如果出現三個執行緒和三個鎖,則會發生死鎖。同樣的,它可以發生在四方、五方和其他死鎖中。
飢餓是在多執行緒應用程式中對一個或多個可執行執行緒的永久性阻塞。
廣告
資料結構
網路連線
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP