int main(void) {
dispatch_queue_t queue = dispatch_queue_create(“com.somecompany.queue”, nil);
dispatch_sync(queue, ^{ // task 1
NSLog(@"Situation 1");
});
return 0;
}
Это нормально запускать в main().
//-------------------------------------------
int main(void) {
dispatch_queue_t queue = dispatch_get_main_queue();
dispatch_sync(queue, ^{ // task 1
NSLog(@"Situation 2");
});
return 0;
}
Это DEAD-LOCK в main().
//-------------------------------------------
Почему ситуация 1 в порядке, а ситуация 2 тупиковая? Оба являются последовательной очередью вызовов синхронизации в основном потоке.
Или только потому, что сам sync() запускается в основной очереди?