前言:
本文作為linux系統(tǒng)編程的總結(jié),介紹了一些零散的概念,例如死鎖、可重入函數(shù)、自旋鎖和讀寫鎖等。其中,死鎖的概念尤為重要,而自旋鎖和讀寫鎖則相對次要,我們只需簡單了解即可。
接下來,我們直接進(jìn)入第一個(gè)主題:死鎖。
死鎖的概念為:
我們可以舉一個(gè)簡單的例子,A持有1元錢,B持有1元錢,A和B都想要購買價(jià)值2元的商品C。此時(shí),A向B申請1元錢,而B向A申請1元錢,但它們都不愿意釋放自己的1元錢。因此,A在等待B提供1元錢,而B在等待A提供1元錢,結(jié)果就形成了互相等待的局面。
從上面的例子中,我們可以總結(jié)出死鎖形成的原因:
互斥條件:至少有一個(gè)資源只能被某個(gè)執(zhí)行流持有。
請求并保持條件:一個(gè)執(zhí)行流在申請新資源時(shí),仍舊保持對已有資源的占有。
不可剝奪條件:已經(jīng)分配給一個(gè)執(zhí)行流的資源不能被強(qiáng)行剝奪,只能由執(zhí)行流自身釋放。
環(huán)路等待條件:存在一個(gè)環(huán)路,每個(gè)執(zhí)行流都在等待其他執(zhí)行流持有的資源。
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載。
THE END