J'essaie d'imposer un ordre spécifique pour les tâches à effectuer à l'aide de Grand Central Dispatch, mais j'ai de la difficulté à comprendre la bonne façon de procéder. J'ai essayé d'utiliser des groupes de la manière suivante:Utilisation de GCD pour attendre une condition
Initialisation:
startup = dispatch_group_create();
tâches qui doivent attendre:
//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
});
});
travail que je dois attendre:
dispatch_group_async(startup,dispatch_get_main_queue(),^{ // work });
En raison de la nature de mon application, les tâches qui doivent attendre peuvent se produire AVANT le travail que je dois attendre. Ce que je veux vraiment, c'est la capacité d'attendre une condition de cette façon quand la condition est faite, c'est fait, et tous les futurs threads peuvent faire leur chose. Est-ce que GCD a ceci?