Comme le titre, dispatch_sync() sur la file d'attente principale et thread principal provoquera une impasse, comme ça:Pourquoi dispatch_sync sur le thread principal provoque un interblocage, mais pas NSBlockOperation?
dispatch_sync(dispatch_get_main_queue(), ^{
NSLog(@"%@", [NSThread currentThread]);
});
Mais NSBlockOperation ne causera pas l'impasse:
NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"%@", [NSThread currentThread]);
}];
[operation start];
Alors, je Je ne comprends pas pourquoi? Cette fonction ne retourne pas tant que le bloc n'a pas fini comme dispatch_sync, alors pourquoi cela ne provoque pas d'interblocage? Et quelle est la différence entre eux?