GCD 學習(四) dispatch_group


如果想在dispatch_queue中所有的任務執行完成后在做某種操作,在串行隊列中,可以把該操作放到最后一個任務執行完成后繼續,但是在並行隊列中怎么做呢。這就有dispatch_group 成組操作。比如

    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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM