/*
第一個參數:DISPATCH_TIME_NOW 從現在開始計算時間
第二個參數:延遲的時間 2.0 * GCD時間單位:納秒
第三個參數:隊列
*/
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
});
//不能使用到懶加載
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
});
//柵欄函數不能使用全局并發隊列
dispatch_barrier_async(dispatch_queue_create("download", DISPATCH_QUEUE_PRIORITY_DEFAULT), ^{
});
/*
第一個參數:遍歷的次數
第二個參數:隊列(并發隊列)
第三個參數:索引
*/
dispatch_apply(10, dispatch_get_global_queue(0, 0), ^(size_t index) {
});
//1.創建隊列
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
//2.創建隊列組
dispatch_group_t group = dispatch_group_create();
//3.異步函數
dispatch_group_async(group, queue, ^{
});
dispatch_group_async(group, queue, ^{
});
//攔截通知,當隊列組中所有的任務都執行完畢的時候會進入到下面的方法
//本身是異步的
dispatch_group_notify(group, queue, ^{
});
//等待,死等.直到隊列組中所有的任務都執行完畢之后才能執行
//本身是阻塞的
dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
//1.創建GCD中的定時器
/*
第一個參數:DISPATCH_SOURCE_TYPE_TIMER 表示是定時器
第二個參數:描述信息,線程ID
第三個參數:更詳細的描述信息
第四個參數:隊列,決定GCD定時器中的任務在哪個線程中執行
*/
dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(0, 0));
//2.設置定時器(起始時間|間隔時間|精準度)
/*
第一個參數:定時器對象
第二個參數:起始時間
第三個參數:間隔時間
第四個參數:精準度 絕對精準0
*/
dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 2.0 * NSEC_PER_SEC, 0 * NSEC_PER_SEC);
//3.設置定時器執行的任務
dispatch_source_set_event_handler(timer, ^{
});
//4.啟動任務
dispatch_resume(timer);