Я пытаюсь навязать определенный порядок для выполнения задач с помощью Grand Central Dispatch, но у меня возникли некоторые проблемы с пониманием правильного способа сделать это.Я попытался использовать группы следующим образом:
Инициализация:
startup = dispatch_group_create();
Задачи, которые нужно ждать:
//Don't want to wait on the main thread, so dispatch async to a concurrent queue
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0L),^{
//Wait until we're finished starting up
dispatch_group_wait(startup,DISPATCH_TIME_FOREVER);
//Now we can do this stuff back on the main queue
dispatch_async(dispatch_get_main_queue(),^{
//Do work
});
});
Работа, которую мне нужно ждать:
dispatch_group_async(startup,dispatch_get_main_queue(),^{ // work });
Из-за характера моего приложения задачи, которые нужно ждать, могут выполняться ДО той работы, которую мне нужно ждать.Что я действительно хочу, так это возможность ждать условия таким образом, когда условие выполнено, оно выполнено, и все будущие потоки могут делать свое дело.У GCD есть это?