iOS多线程GCD使用
来源:互联网 发布:淘宝卖家授权店小二 编辑:程序博客网 时间:2024/05/17 03:18
Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法。
dispatch queue分成以下三种:
1)运行在主线程的Main queue,通过dispatch_get_main_queue获取。
2)并行队列global dispatch queue,通过dispatch_get_global_queue获取,由系统创建三个不同优先级的dispatch queue。并行队列的执行顺序与其加入队列的顺序相同。
3)串行队列serial queues一般用于按顺序同步访问,可创建任意数量的串行队列,各个串行队列之间是并发的。
当想要任务按照某一个特定的顺序执行时,串行队列是很有用的。串行队列在同一个时间只执行一个任务。我们可以使用串行队列代替锁去保护共享的数据。和锁不同,一个串行队列可以保证任务在一个可预知的顺序下执行。
serial queues通过dispatch_queue_create创建,可以使用函数dispatch_retain和dispatch_release去增加或者减少引用计数。
// 后台执行:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
// something
});
// 主线程执行:
dispatch_async(dispatch_get_main_queue(), ^{
// something
});
// 一次性执行:
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
// code to be executed once
});
// 延迟2秒执行:
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
});
// 自定义dispatch_queue_t
dispatch_queue_t urls_queue =dispatch_queue_create("com.aaa.bbb",NULL);
dispatch_async(urls_queue, ^{
// your code
});
dispatch_release(urls_queue);
// 合并汇总结果
dispatch_group_t group =dispatch_group_create();
dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
//并行执行的线程一
});
dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
//并行执行的线程二
});
dispatch_group_notify(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
// 汇总结果
});
- iOS多线程GCD使用
- ios多线程 GCD使用
- iOS GCD多线程使用
- ios 使用GCD 多线程 教程
- iOS多线程--GCD使用攻略
- iOS GCD 多线程的使用
- iOS 多线程GCD的使用
- ios 使用GCD 多线程 教程
- iOS 多线程之GCD使用
- ios 关于GCD多线程使用
- iOS 多线程之GCD的简单使用
- iOS中多线程与GCD的使用
- iOS多线程编程GCD的使用
- iOS 多线程的使用(GCD)
- iOS多线程中GCD的使用
- iOS多线程编程GCD介绍和使用
- iOS开发多线程-GCD的基本使用
- iOS多线程GCD介绍和使用
- 如何有效的限制上传文件类型
- P051第八题
- 栈的一个小应用——Dijkstra的双栈算术表达式
- IOS代理的使用(主要用于视图之间传参)
- Magento搜索结果页缓存策略解析
- iOS多线程GCD使用
- 术语VCL的变更:从VCL到CLX
- IOS应用提交所需的ICON
- 【菜鸟学Opencv 4】-Opencv学习资料(不断更新中)
- word文档是怎么转换成PDF格式的
- vs未找到导入的项目,请确认 <Import> 声明中的路径正确
- jquery file upload多文件上传的简单应用
- 【深入了解cocos2d-x 3.x】UI树(3)——UI树的渲染机制
- Android Matrix的详解与应用