如题,主队列和主线程上的dispatch_sync()会导致死锁,像这样:
dispatch_sync(dispatch_get_main_queue(), ^{
NSLog(@"%@", [NSThread currentThread]);
});
但是NSBlockOperation不会造成死锁:
NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"%@", [NSThread currentThread]);
}];
[operation start];
所以,我不明白为什么?这个函数和dispatch_sync一样直到块完成才返回,那么为什么它不会导致死锁呢?他们之间有什么不同?