美文网首页
GCD常用函数

GCD常用函数

作者: 红茶绅士 | 来源:发表于2017-04-07 14:52 被阅读38次
    • 延迟执行
    /*
    第一个参数: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);
    

    相关文章

      网友评论

          本文标题:GCD常用函数

          本文链接:https://www.haomeiwen.com/subject/ogehattx.html