Есть ли какая-то разница между ними, если dispatch_sync вызывается в 3-х различных очереди какdispatch_sync() всегда выполнять блок в главном потоке
1.
dispatch_sync(dispatch_get_main_queue(),^(void){
NSLog(@"this execute in main thread") // via [NSThread isMainThread]
});
2.
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^(void){
NSLog(@"this also execute in main thread") // via [NSThread isMainThread]
}
3.
dispatch_queue_t queue;
queue = dispatch_queue_create("com.example.MyQueue", NULL);
dispatch_sync(queue, ^(void){
NSLog(@"this also execute in main thread") // via [NSThread isMainThread]
}
Всякий раз, когда я вызов dispatch_sync, блок, выполненный в основном потоке, не учитывая, в какой очереди он отправлен. Итак, почему эта функция принимает очередь в качестве аргумента, поскольку она не использует ее. Может кто-нибудь прояснить это?
Откуда вы знаете, что это выполнено в основной теме? – Droppy
[NSThread isMainThread] говорит, что это основной поток. – russell