初識Linux · 系統(tǒng)編程done

前言:

本文作為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é)出死鎖形成的原因:

初識Linux · 系統(tǒng)編程done

互斥條件:至少有一個(gè)資源只能被某個(gè)執(zhí)行流持有。

請求并保持條件:一個(gè)執(zhí)行流在申請新資源時(shí),仍舊保持對已有資源的占有。

不可剝奪條件:已經(jīng)分配給一個(gè)執(zhí)行流的資源不能被強(qiáng)行剝奪,只能由執(zhí)行流自身釋放。

環(huán)路等待條件:存在一個(gè)環(huán)路,每個(gè)執(zhí)行流都在等待其他執(zhí)行流持有的資源。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊7 分享