iOS-GCD死锁

  NSLog(@"1"); // 任务1
    dispatch_sync(dispatch_get_main_queue(), ^{
        NSLog(@"2"); // 任务2
    });

所谓死锁,通常指有两个线程A和B都卡住了,A在等B ,B在等A,相互等待对方完成某些操作。A不能完成是因为它在等待B完成。但B也不能完成,因为它在等待A完成。于是大家都完不成,就导致了死锁(DeadLock)。

死锁原因
dispatch_sync是同步的,本身就会阻塞主线程,需要等待任务2完成,而任务2需要在主线程中完成,但是dispatch_sync阻塞了主线程,相互等待,造成死锁

你可能感兴趣的:(iOS-GCD死锁)