首页 > 移动平台 > 详细

dispatch_apply的用法

时间:2017-11-07 16:10:56      阅读:310      评论:0      收藏:0      [点我收藏+]

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的用法

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

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