/*
第一个参数: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);
网友评论