人生必须的知识就是引人向光明方面的明灯。这篇文章主要讲述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);
推荐阅读
- Android中Parcelable接口用法
- 《完美解决系列》Android5.0以上 Implicit intents with startService are not safe
- Kivy 中文教程 实例入门 简易画板 (Simple Paint App)(0. 项目简介 & 成果展示)
- Android Bug分析系列(第三方平台安装app启动后,home键回到桌面后点击app启动时会再次启动入口类bug的原因剖析)
- Android SDK下载和更新时遇到的问题&解决方法
- ssemble JavaBeans components into an application without having to write any code
- JavaNIO的深入研究4内存映射文件I/O,大文件读写操作,Java nio之MappedByteBuffer,高效文件/内存映射
- 卡西欧tr500怎样?卡西欧tr500设置评测
- 小霸王x28游戏机怎样?小霸王x28游戏机设置