-(void)test1{
dispatch_queue_t queue = dispatch_get_main_queue();
NSLog(@"start");
dispatch_sync(queue, ^{
NSLog(@"%@",[NSThread currentThread]);
});
}
-(void)test2{
dispatch_queue_t queue = dispatch_queue_create("com.yaoye.serial", DISPATCH_QUEUE_SERIAL);
NSLog(@"start");
dispatch_sync(queue, ^{
NSLog(@"%@",[NSThread currentThread]);
});
}
主线程被阻塞等待同步功能,阻塞进入runloop的主线程无法执行,导致死锁。
等待同步功能的主线程被阻塞,阻塞进入runloop的主线程,但没有死锁。&lt; 2016-03-14 13:55:06.730 GCD[54320:12111593] <NSThread: 0x7fef4ac08810>{number = 1, name = main}
&gt;
为什么不是test2死锁?
答案 0 :(得分:0)
因为test1
使用相同的主队列,而test2
使用不同的队列