GCD 學習(四) dispatch_group

若是想在dispatch_queue中全部的任務執行完成後在作某種操做,在串行隊列中,能夠把該操做放到最後一個任務執行完成後繼續,可是在並行隊列中怎麼作呢。這就有dispatch_group 成組操做。好比async

    dispatch_queue_t dispatchQueue = dispatch_queue_create("ted.queue.next", DISPATCH_QUEUE_CONCURRENT);
    dispatch_group_t dispatchGroup = dispatch_group_create();
    dispatch_group_async(dispatchGroup, dispatchQueue, ^(){
        NSLog(@"dispatch-1");
    });
    dispatch_group_async(dispatchGroup, dispatchQueue, ^(){
        NSLog(@"dspatch-2");
    });
    dispatch_group_notify(dispatchGroup, dispatch_get_main_queue(), ^(){
        NSLog(@"end");
    });

上面的 log1 和log2輸出順序不定,由於是在並行隊列上執行,當並行隊列所有執行完成後,最後到main隊列上執行一個操做,保證「end」是最後輸出。 另外,這裏也能夠不用建立本身的並行隊列,用全局的global,那個也是個並行隊列. dispatch_get_gloable_queue(0,0);spa

相關文章
相關標籤/搜索