iOS之路7-GCD-調度組

有時須要多個異步任務都執行完成以後繼續作某些事情, 調度組能夠幫咱們實現網絡

調度組的簡單測試
併發

-  (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    [self group2];
}
- (void)group2 {
    
    // 1.建立group
    dispatch_group_t group = dispatch_group_create();
    // 建立全局隊列
    dispatch_queue_t q = dispatch_get_global_queue(0, 0);
    
    // 2.建立併發任務
    // 入組 - 會監聽後續的 block(任意,例如能夠是網絡方法的block)
    dispatch_group_enter(group);
    dispatch_async(q, ^{
        NSLog(@"www - %@", [NSThread currentThread]);
        
        // 出組的代碼 必定放在block的最後一句 通知調度組,任務完成了
        dispatch_group_leave(group);
    });
    
    dispatch_group_enter(group);
    dispatch_async(q, ^{
        NSLog(@"mmm - %@", [NSThread currentThread]);
        
        dispatch_group_leave(group);
    });
    
    // 3.監聽調度組 - 等待組中的任務都執行完畢,纔會執行
    dispatch_group_notify(group, dispatch_get_main_queue(), ^{
        NSLog(@"over");
    });
}
相關文章
相關標籤/搜索