首页 > 其他 > 详细

GCD的使用(一)

时间:2015-04-02 16:52:16      阅读:211      评论:0      收藏:0      [点我收藏+]

1.异步执行

dispatch_async(dispatch_get_global_queue(0, 0), ^{      
// something 
});

2.同步执行

dispatch_sync(dispatch_get_global_queue(0, 0), ^{      
// something 
});
dispatch_get_global_queue(0, 0) //表示创建一个新的任务(可以理解成线程)执行
dispatch_get_main_queue()       //表示使用主线程调用block

3.一次性执行(常用于单例模式)

 static dispatch_once_t onceToken;
 dispatch_once(&onceToken, ^{    
  // code to be executed once 
 });

4.定时执行

double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){    
  // code to be executed on the main queue after delay
});

5.自定义任务队列

dispatch_queue_t urls_queue = dispatch_queue_create("blog.devtang.com", NULL);
dispatch_async(urls_queue, ^{  
  // your code  
});
dispatch_release(urls_queue);

6.任务组,汇总

dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, dispatch_get_global_queue(0,0), ^{ 
   // 并行执行的线程一 
});
dispatch_group_async(group, dispatch_get_global_queue(0,0), ^{    
   // 并行执行的线程二 
});
dispatch_group_notify(group, dispatch_get_global_queue(0,0), ^{   
   // 汇总结果
});


GCD的使用(一)

原文:http://my.oschina.net/iq19900204/blog/395185

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!