iOS中的線程死鎖

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

    1. 互斥條件:進(jìn)程對所分配到的資源不允許其他進(jìn)程進(jìn)行訪問,若其他進(jìn)程訪問該資源缘琅,只能等待粘都,直至占有該資源的進(jìn)程使用完成后釋放該資源

    2. 請求和保持條件:進(jìn)程獲得一定的資源之后,又對其他資源發(fā)出請求刷袍,但是該資源可能被其他進(jìn)程占有翩隧,此時(shí)請求阻塞,但又對自己獲得的資源保持不放

    3. 不可剝奪條件:是指進(jìn)程已獲得的資源呻纹,在未完成使用之前堆生,不可被剝奪,只能在使用完后自己釋放

    4. 環(huán)路等待條件:是指進(jìn)程發(fā)生死鎖后雷酪,必然存在一個(gè)進(jìn)程--資源之間的環(huán)形鏈

  • GCD線程死鎖產(chǎn)生的具體原因:在一個(gè)串行隊(duì)列的任務(wù)中淑仆,再向這個(gè)隊(duì)列同步添加任務(wù)。



典型例子:

image.png

我們分析一下:


image.png

主隊(duì)列main_queue是一個(gè)串行隊(duì)列哥力,串行隊(duì)列的特點(diǎn)就是隊(duì)列中所有任務(wù)必須順序執(zhí)行蔗怠。也就是說必須按照添加到隊(duì)列中的先后順序執(zhí)行。

我們再看一張圖:

image.png

我們在代碼中使用dispatch_sync()函數(shù)給主隊(duì)列添加了一個(gè)同步任務(wù):

- (void)viewDidLoad {
    [super viewDidLoad];
    
    dispatch_sync(dispatch_get_main_queue(), ^{
        NSLog(@"線程死鎖");
    });
}

也就是說后添加的同步任務(wù)5是在viewDidLoad任務(wù)2之后吩跋,只有等待任務(wù)2執(zhí)行完之后才能執(zhí)行任務(wù)5蟀淮,這就是串行隊(duì)列的特點(diǎn)。但是任務(wù)5是一個(gè)同步任務(wù)钞澳,必須等任務(wù)5執(zhí)行完才能執(zhí)行其它任務(wù),因此造成互相等待的死鎖涨缚。

再看一個(gè)例子

image.png

我們知道GCD分為同步任務(wù)和異步任務(wù)轧粟,最開始的例子是主線程的主隊(duì)列策治,相當(dāng)于是一個(gè)同步任務(wù)。而這個(gè)例子證明了兰吟,即便是在異步任務(wù)只要任務(wù)隊(duì)列是串行隊(duì)列通惫,在串行隊(duì)列的任務(wù)中再向隊(duì)列添加同步任務(wù),就會(huì)造成死鎖混蔼,關(guān)鍵點(diǎn)不是同步還是異步履腋,而是串行隊(duì)列。

總結(jié)

dispatch_sync()函數(shù)會(huì)阻塞線程惭嚣。當(dāng)前隊(duì)列是串行隊(duì)列遵湖,任務(wù)必須順序執(zhí)行。在串行隊(duì)列的任務(wù)A中給這個(gè)隊(duì)列添加同步任務(wù)B晚吞,相當(dāng)于說這個(gè)串行隊(duì)列又多了一個(gè)任務(wù)B延旧,任務(wù)B如果想要執(zhí)行必須等待任務(wù)A執(zhí)行完,但是任務(wù)B是同步任務(wù)槽地,必須等任務(wù)B執(zhí)行完才能執(zhí)行其它任務(wù)迁沫,所以任務(wù)AB互相等待,造成死鎖捌蚊。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末集畅,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子缅糟,更是在濱河造成了極大的恐慌挺智,老刑警劉巖溺拱,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逃贝,死亡現(xiàn)場離奇詭異,居然都是意外死亡沐扳,警方通過查閱死者的電腦和手機(jī)句占,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門杨拐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人擂啥,你說我怎么就攤上這事哄陶。” “怎么了哺壶?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵屋吨,是天一觀的道長蜒谤。 經(jīng)常有香客問我,道長至扰,這世上最難降的妖魔是什么鳍徽? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮敢课,結(jié)果婚禮上阶祭,老公的妹妹穿的比我還像新娘。我一直安慰自己直秆,他們只是感情好濒募,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著切厘,像睡著了一般萨咳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上疫稿,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天培他,我揣著相機(jī)與錄音,去河邊找鬼遗座。 笑死舀凛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的途蒋。 我是一名探鬼主播猛遍,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼号坡!你這毒婦竟也來了懊烤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤宽堆,失蹤者是張志新(化名)和其女友劉穎腌紧,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體畜隶,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡壁肋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了籽慢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浸遗。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖箱亿,靈堂內(nèi)的尸體忽然破棺而出跛锌,到底是詐尸還是另有隱情,我是刑警寧澤届惋,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布察净,位于F島的核電站驾茴,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏氢卡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一晨缴、第九天 我趴在偏房一處隱蔽的房頂上張望译秦。 院中可真熱鬧,春花似錦击碗、人聲如沸筑悴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽阁吝。三九已至,卻和暖如春械拍,著一層夾襖步出監(jiān)牢的瞬間突勇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工坷虑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留甲馋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓迄损,卻偏偏與公主長得像定躏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子芹敌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 29,392評論 8 265
  • 本文是我自己在秋招復(fù)習(xí)時(shí)的讀書筆記痊远,整理的知識點(diǎn),也是為了防止忘記氏捞,尊重勞動(dòng)成果碧聪,轉(zhuǎn)載注明出處哦!如果你也喜歡幌衣,那...
    波波波先森閱讀 11,268評論 4 56
  • 從哪說起呢矾削? 單純講多線程編程真的不知道從哪下嘴。豁护。 不如我直接引用一個(gè)最簡單的問題哼凯,以這個(gè)作為切入點(diǎn)好了 在ma...
    Mr_Baymax閱讀 2,762評論 1 17
  • iOS多線程編程 基本知識 1. 進(jìn)程(process) 進(jìn)程是指在系統(tǒng)中正在運(yùn)行的一個(gè)應(yīng)用程序,就是一段程序的執(zhí)...
    陵無山閱讀 6,052評論 1 14
  • 清晨的第一縷陽光散在我的臉旁楚里,收拾好外出的行囊断部,就這樣悄無聲息的出發(fā)了。 來到這座熟悉的山腳下班缎,望著扭扭曲曲的山路...
    淡雅的淚光閱讀 368評論 0 0