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(@"該部分多次調用多次執行");
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章