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

dispatch_apply的用法

时间:2017-11-07 16:28:01      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:void   pretty   判断   时间函数   关联   keyword   代码   迭代   时间   

dispatch_apply的用法

并行模拟for循环,将指定的代码循环10次,一般会把这些代码附加到一个queue上,然后在 dispatch_apply里并行

dispatch_queue_t queue = dispatch_get_globel_queue(DISPATCH_QUEUE_PREORITY_DEFAULT,0)

dispatch_apply(10, queue, ^(size_t index){

  NSLog("并行执行--%@",index);

});

dispatch_apply_f的用法

dispatch_apply 和 dispatch_apply_f 是同步函数,会阻塞当前线程直到所有循环迭代执行完成。当提交到并发queue时,循环迭代的执行顺序是不确定的 

dispatch_after

延迟指定时间之后执行任务

dispatch_after(dispatch_time_t when, dispatch_queue_t queue, ^(void)block)

 

when:延迟执行时间 一般是一个这样的时间函数: dispatch_time(DISPATCH_TIME_NOW, (int64_t)(10 * NSEC_PER_SEC))

queue:队列 dispatch_get_main_queue()或者 dispatch_get_global_queue()

block:执行的任务

dispatch_once

dispatch_once(dispatch_once_t *predicate, ^(void)block)

predicate: 用来判断需要执行的任务是否执行完成

block :需要执行的一次性任务

+ (instantClass *)sharedClient {

  static instantClass *_sharedClient = nil;

  static dispatch_once_t onceToken;

  dispatch_once(&onceToken, ^{

     _sharedClient = [[instantClass alloc] init];

  });

   return _sharedClient;

}

 dispatch_group

dispatch_grpup,把若干个任务放到一个dispatch group中

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PREORITY_DEFAULT,0);

dispatch_queue_group group = dispatch_group_craete();

dispatch_group_aysnc(group, queue,^{

  //do some async work

});

 

dispatch_group_async 和 dispatch_async一样,会把任务放到queue中执行,只不过它比dispatch_async多了一步操作,就是把这个任务和group相关联,

把这些任务放到group之后,我们可以调用dispatch_group_wait来等待任务完成。若任务已经全部完成或者为空,直接返回,否则等待所有任务完成之后返回。注意返回之后任务清空。

dispatch_group_wait(group,DISPATCH_TIME_FORVER);

dispatch_release(group);

 

 

 

 

 

 

 

 

 

dispatch_apply的用法

标签:void   pretty   判断   时间函数   关联   keyword   代码   迭代   时间   

原文地址:http://www.cnblogs.com/wjw-blog/p/7799295.html

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