dispatch_apply的用法

人生必须的知识就是引人向光明方面的明灯。这篇文章主要讲述dispatch_apply的用法相关的知识,希望能为你提供帮助。
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_oncedispatch_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];
});
【dispatch_apply的用法】return _sharedClient;
}
  dispatch_groupdispatch_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);
 
 
 
 
 
 
 
 
 





    推荐阅读