新的讀者可能在 同步執(zhí)行+串行隊(duì)列 與 同步執(zhí)行+主隊(duì)列 (前者可以正常執(zhí)行,后者產(chǎn)生死鎖)會(huì)產(chǎn)生疑問
兩者的相同地方則都是同步執(zhí)行不具備開啟線程的能力靡菇,可以理解為只有一條線程(主線程);
但是例如鏈接里面的例子- (void)syncMain{};這個(gè)方法可以想成是加載到了主線程的主隊(duì)列里(主隊(duì)列也是串行隊(duì)列);其他方法同理;這里說的方法不是方法里的“任務(wù)”众雷;
當(dāng) 同步執(zhí)行+主隊(duì)列 這種模式下啟動(dòng)任務(wù)時(shí)闻鉴,相當(dāng)于把任務(wù)一又給添加到了主隊(duì)列里,而且主隊(duì)列是同步執(zhí)行,也就相當(dāng)于syncMain方法在主隊(duì)列里執(zhí)行的時(shí)候又給主隊(duì)列加了一個(gè)新的任務(wù)(任務(wù)一),新加的任務(wù)一需要syncMain方法完事之后在執(zhí)行,可syncMain也在等待任務(wù)一執(zhí)行,所以造成了相互等待(死鎖)盈厘;