/** 主队列同步 */- (void)syncMain {
NSLog(@"\n\n**************主队列同步,放到主线程会死锁***************\n\n");
// 主队列
dispatch_queue_t queue = dispatch_get_main_queue();
dispatch_sync(queue, ^{
for (int i = 0; i < 3; i++) {
NSLog(@"主队列同步任务1 %@",[NSThread currentThread]);
}
});
}
主队列在主线程中,syncMain就是主队列中的任务。
1、主线程执行主队列中的任务syncMain.
2、执行到任务1添加到主队列的时候,需要执行任务1。
3、但此时主线程在执行syncMain任务,需要等待syncMain任务执行完毕之后在执行任务1.
4、但是执行syncMain的时候要执行任务1.
5、所以syncMain和任务1互相等待,造成死锁。