web-dev-qa-db-fra.com

Créer une file d'attente de répartition mondiale séquentielle personnalisée

Dans de nombreux endroits de mon application, j'utilise le code suivant pour effectuer des tâches d'arrière-plan et informer le fil principal:

dispatch_queue_t backgroundQueue = dispatch_queue_create("dispatch_queue_#1", 0);
    dispatch_async(backgroundQueue, ^{

   dispatch_async(dispatch_get_main_queue(), ^{


        });
    });

Est-il possible de créer une analyse au même endroit (où est le meilleur moyen?) Et l'utiliser plus tard? Je connais la file d'attente globale du système, mais la commande est importante pour moi.

22
pvllnspk

Quelque chose comme ça devrait fonctionner bien:

dispatch_queue_t backgroundQueue() {
    static dispatch_once_t queueCreationGuard;
    static dispatch_queue_t queue;
    dispatch_once(&queueCreationGuard, ^{
        queue = dispatch_queue_create("com.something.myapp.backgroundQueue", 0);
    });
    return queue;
}
40
Catfish_Man

Vous pouvez également nous allouer des opérations de NsoperationQue et de pousser. Pour vous assurer que les opérations ne manquent pas d'ordre, vous pouvez définir ISCONCURRENT à NO.

0
JeffRegan
queue = dispatch_queue_create("com.something.myapp.backgroundQueue", 0);

La file d'attente série est précédente, si vous souhaitez créer une file d'attente simultanée, vous pouvez utiliser DisPatch_Queue_ConCurrent.

Dans iOS 5 et plus tard, vous pouvez vous créer vous-même des files d'attente de répartition simultanées en spécifiant Dispatch_Queue_ConCurrent comme type de file d'attente.

dispatch_queue_t queue = dispatch_queue_create("downLoadAGroupPhoto",
                                                   DISPATCH_QUEUE_CONCURRENT);
0
AllanXing