Loading

GCD系统提供的常用dispatch方法

 

 //后台执行
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
       // <#code#>
    });
    
    dispatch_async(dispatch_get_global_queue(0, 0), ^{
        // <#code#>
    });
    
    //主线程执行
    dispatch_async(dispatch_get_main_queue(), ^{
       // <#code#>
    });
    
    //一次性执行
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        //<#code to be executed once#>
    });
    
    //延迟2秒执行
    double delayInSeconds=2.0;
    dispatch_time_t potTime =dispatch_time(DISPATCH_TIME_NOW, delayInSeconds*NSEC_PER_SEC);
    dispatch_after(potTime, dispatch_get_main_queue(), ^{
        //<#code#>
    });
    
    
    //自定义
    dispatch_queue_t urls_queen =dispatch_queue_create("blog.fyl.com", NULL);
    dispatch_async(urls_queen, ^{
        //<#code#>
    });
    
    
    //两个后台线程并行执行,全部结束后再汇总执行结果
    dispatch_group_t group=dispatch_group_create();
    dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
        //并行执行线程1
    });
    dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
        //并行执行线程2
    });
    dispatch_group_notify(group, dispatch_get_global_queue(0, 0), ^{
        //汇总结果
    });
}

 

 

posted @ 2016-03-12 16:22  yaro-feng  阅读(211)  评论(0)    收藏  举报