NSLog(@"1"); // 任務(wù)1
dispatch_sync(dispatch_get_main_queue(), ^{
NSLog(@"2"); // 任務(wù)2
});
所謂死鎖乍丈,通常指有兩個線程A和B都卡住了把将,A在等B ,B在等A,相互等待對方完成某些操作忆矛。A不能完成是因為它在等待B完成察蹲。但B也不能完成催训,因為它在等待A完成。于是大家都完不成亚兄,就導(dǎo)致了死鎖(DeadLock)。
死鎖原因
dispatch_sync是同步的审胚,本身就會阻塞主線程,需要等待任務(wù)2完成膳叨,而任務(wù)2需要在主線程中完成,但是dispatch_sync阻塞了主線程菲嘴,相互等待,造成死鎖