死鎖

1.死鎖原因

1)資源競爭?

2)進程推進順序非法(互相占有彼此需要的資源,同時請求對方占有的資源)

所謂死鎖,通常指有兩個線程T1和T2都卡住了,并等待對方完成某些操作。T1不能完成是因為它在等待T2完成。但T2也不能完成,因為它在等待T1完成。于是大家都完不成,就導致了死鎖(DeadLock)

例子:

在某一個串行隊列中,同步的向這個串行隊列添加block。(進程推進順序非法)

火車票 搶票 同時調(diào)用一個代碼塊 (資源競爭)

下圖是進程推進順序非法:

2.死鎖的必要條件

產(chǎn)生死鎖的四個必要條件:

(1) 互斥條件:一個資源每次只能被一個進程使用。

(2) 請求與保持條件:一個進程因請求資源而阻塞時,對已獲得的資源保持不放。

(3) 不剝奪條件:進程已獲得的資源,在末使用完之前,不能強行剝奪。

(4) 循環(huán)等待條件:若干進程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系。

這四個條件是死鎖的必要條件,只要系統(tǒng)發(fā)生死鎖,這些條件必然成立,而只要上述條件之

一不滿足,就不會發(fā)生死鎖。


五個案例讓你明白GCD死鎖

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、競態(tài)條件: 定義:競態(tài)條件指的是一種特殊的情況,在這種情況下各個執(zhí)行單元以一種沒有邏輯的順序執(zhí)行動作,從而導致...
    Hughman閱讀 1,439評論 0 7
  • 死鎖的概念 死鎖的定義 在多道程序系統(tǒng)中,由于多個進程的并發(fā)執(zhí)行,改善了系統(tǒng)資源的利用率并提高了系統(tǒng)的處理能力。然...
    CodeKing2017閱讀 1,670評論 0 4
  • 死鎖產(chǎn)生的原因和解鎖的方法 產(chǎn)生死鎖的四個必要條件: (1) 互斥條件:一個資源每次只能被一個進程使用。 (2) ...
    憩在河岸上的魚丶閱讀 1,544評論 0 4
  • 關(guān)于死鎖 多道程序系統(tǒng)借助并發(fā)執(zhí)行改善資源利用率,提高系統(tǒng)吞吐量,但可能發(fā)生一種危險——死鎖。 死鎖(Deadlo...
    盆栽木只閱讀 1,218評論 0 0
  • 親愛的粑粑,今天睜開眼睛就聽見你說親愛的老婆,看來有學到一點精髓哦! 親愛的寶貝,今天知道媽媽上夜班,給媽媽安排好...
    的魅力閱讀 674評論 0 0

友情鏈接更多精彩內(nèi)容