码迷,mamicode.com
首页 > 移动开发 > 详细

ios多线程开发 GCD常见用法

时间:2014-12-30 15:11:06      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

1-延迟执行

 可以安排其线程(1),主队列

         dispatch_queue_t queue= dispatch_get_main_queue();

         dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)), queue, ^{

            NSLog(@"主队列--延迟执行------%@",[NSThread currentThread]);

       });     

 可以安排其线程(2),并发队列

     1.获取全局并发队列

       dispatch_queue_t queue1= dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

     2.计算任务执行的时间

       dispatch_time_t when=dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC));

     3.会在when这个时间点,执行queue中的这个任务

       dispatch_after(when, queue1, ^{

         NSLog(@"并发队列-延迟执行------%@",[NSThread currentThread]);

       });

 

2.使用dispatch_once一次性代码

    使用dispatch_once函数能保证某段代码在程序运行过程中只被执行1

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        // 只执行1次的代码(这里面默认是线程安全的)

    });

整个程序运行过程中,只会执行一次。

 

3.队列组

使用队列组可以让任务1和任务2同时进行,且当两个任务都完成的时候回到主线程进行界面显示操作。

//1.创建一个队列组

        dispatch_group_t group = dispatch_group_create();

 

//2.开启一个任务

        dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{  

        });

    

//3.开启第二个任务

        dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{  

        });

//同时执行任务1\任务2操作

 

//4.group中的所有任务都执行完毕, 再回到主线程执行其他操作

        dispatch_group_notify(group,dispatch_get_main_queue(), ^{

             

        });

 

ios多线程开发 GCD常见用法

标签:

原文地址:http://www.cnblogs.com/yangli-ios/p/4193558.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!