GCD的调度组和延迟执行、一次性执行

调度组范例

//实例化调度组
dispatch_group_t group = daspatch_group_greate();
//创建队列
dispatch_queue_t queue = dispatch_get_glabal_queue(0,0);
//任务加入
dispatch_group_async(group, queue, ^{
    NSLog(@"A任务---%@", [NSThread currentThread]);
});
dispatch_group_async(group, queue, ^{
    NSLog(@"B任务---%@", [NSThread currentThread]);
});
dispatch_group_async(group, queue, ^{
    NSLog(@"C任务---%@", [NSThread currentThread]);
});
//获得调度组内的任务完成后的通知,这个通知可以跨队列通信.
//比如这个通知是要更新UI的话,就把它放到主队列里执行就可以了。
dispatch_group_notify(group, queue, ^{
    NSLog(@"ABC任务均已完成。");
});

延迟执行范例:

dispatch_time_t when = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0*NSEC_PER_SEC));

dispatch_after(when, dispatch_get_main_queue(), ^{
    NSLog(@"123");
    });

一次性执行范例:

-(void)once
{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
    NSLog(@"该部分即使调用多次只会执行一次");
    }
    NSLog(@"该部分多次调用多次执行");
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章