La suspension de PGCD requête problème

j'ai du mal à la suspension d'un pgcd de requête. Voici un code qui illustre le problème:

static dispatch_queue_t q=nil;

static void test(int a){
    if(q){
        dispatch_suspend(q);
        dispatch_release(q);
        q=nil;
    }
    q=dispatch_get_global_queue(0,0);
    dispatch_async(q,^ {
        while(1){NSLog(@"query %d",a);sleep(2);}
    });

}

int main(int argc, const char* argv[]){
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    test(1);

    //blah blah blah

    test(2);

    while(1){}
    [pool release];
    return 0;
}

Ce que je suis en train de faire est de suspendre,de libération et de réinitialiser la requête q lorsque la fonction de test est appelé la deuxième fois, mais apparenty mon code est faux et les deux instances de la requête q continuer à exécuter.

Votre aide est très appréciée, merci.

InformationsquelleAutor Kostas.N | 2011-07-18