1、應用場景:調度組一般用于,執行有先后順序的操作中
- 本例需求如下:在異步下載完成任務A 和 任務B后在執行任務C
//
// ViewController.m
// 2-調度組
//
// Created by 紫荊秋雪 on 17/2/3.
// Copyright ? 2017年 Revan. All rights reserved.
// 調度組:在任務A和任務B都完成以后再執行‘監聽方法’
// 使用于:有先后順序的任務
/**
1.調度組沒有任務,直接執行 notify
2.入組 多于 出租,notify 永遠不會執行,因為組永遠不會為空
3.出組 多于 入組,會崩潰
*/
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self group];
}
- (void)group {
// 1.創建調度組
dispatch_group_t group = dispatch_group_create();
// 2.隊列
dispatch_queue_t q = dispatch_get_global_queue(0, 0);
// 3.調度組
// 1> 入組
dispatch_group_enter(group);
dispatch_async(q, ^{
// 下載任務
[NSThread sleepForTimeInterval:2.0];
NSLog(@"downlaod 任務A %@", [NSThread currentThread]);;
// 2> 出租
dispatch_group_leave(group);
});
// 2> 入組
dispatch_group_enter(group);
dispatch_async(q, ^{
// 下載任務
NSLog(@"downlaod 任務B %@", [NSThread currentThread]);
// 出租
dispatch_group_leave(group);
});
// 監聽
dispatch_group_notify(group, q, ^{
NSLog(@"come here 任務C %@", [NSThread currentThread]);
});
}
@end
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。