苹果多线程网络编程之-GCD队列与任务的理解
来源:互联网 发布:python爬虫教程 pdf 编辑:程序博客网 时间:2024/05/17 20:32
今天就 iOS 的多线程 GCD 的使用做了一些总结和理解。
GCD,Grand Central Dispatch,是Apple开发的一个多核编程的解决方法。
GCD其实就是创建/获取一个队列,在 Block 块或方法(函数)里写需要执行的任务代码块,然后将任务放到合适的队列里执行。GCD队列呢,分三种:主队列(串行队列)、全局队列(并行队列)、自定义队列(自定义)。任务执行方法呢,又分为同步执行和异步执行。至于串行队列、并行队列,同步执行、异步执行的特点,自行去学习,这里不做过多阐述。大概意思就是
//同步:在当前线程中执行,不会开新的线程
//异步:会开新的线程,任务在新的线程中执行
//串行:顺序,一个一个的执行(一个执行完才执行下一个)
//并行:多个任务同时执行(可以将队列中的任务全部取出来,只要有线程就可以被执行)
下面介绍三种队列的获取和创建方法。
//1.主队列 /* 主队列:串行队列,通过dispatch_get_main_queue();获取主队列。 串行队列异步执行:先执行完 task1,再执行 task2 */ dispatch_queue_t mainQueue = dispatch_get_main_queue(); dispatch_async(mainQueue, ^{ for (int i = 0; i < 10; i ++) { NSLog(@"task1"); } }); dispatch_async(mainQueue, ^{ for (int i = 0; i < 10; i ++) { NSLog(@"task2"); } });
//2.全局队列: /* 全局队列:并行队列。用dispatch_get_global_queue(0, 0);获取。 参数1:标识,随意设,一般写0。 参数2:4种全局队列,有优先级区分。一般也写0 DISPATCH_QUEUE_PRIORITY_HIGH > DISPATCH_QUEUE_PRIORITY_DEFAULT > DISPATCH_QUEUE_PRIORITY_LOW > DISPATCH_QUEUE_PRIORITY_BACKGROUND 并行队列,异步执行:task1和task2交叉执行,1-2-1-2... */ dispatch_queue_t globalQueen = dispatch_get_global_queue(0, 0); dispatch_async(globalQueen, ^{ for (int i = 0; i < 10; i ++) { NSLog(@"task1"); } }); dispatch_async(globalQueen, ^{ for (int i = 0; i < 10; i ++) { NSLog(@"task2"); } });
//3.自定义队列 /* 自定义队列,需要dispatch_queue_create("www.com", DISPATCH_QUEUE_CONCURRENT);来创建 参数1:标识,随意设置字符串。注意:GCD 是 C 语言的封装,所以要用""而非@“” 参数2:设置并行队列还是串行队列。 DISPATCH_QUEUE_CONCURRENT//并行队列异步执行:task1和 task2随机执行 DISPATCH_QUEUE_SERIAL//串行队列异步执行:先执行完task1,再执行 task2 */ dispatch_queue_t queue1 = dispatch_queue_create("www.com", DISPATCH_QUEUE_CONCURRENT); dispatch_async(queue1, ^{ for (int i = 0; i < 10; i ++) { NSLog(@"task1"); } }); dispatch_async(queue1, ^{ for (int i = 0; i < 10; i ++) { NSLog(@"task2"); } });
1 0
- 苹果多线程网络编程之-GCD队列与任务的理解
- GCD任务、队列理解
- 猫猫学iOS(五十)多线程网络之GCD简单介绍(任务,队列)
- NSURLSession和多线程网络之GCD简单介绍(任务,队列)
- AJ学IOS(50)多线程网络之GCD简单介绍(任务,队列)
- [网络和多线程]6、GCD 队列和任务
- GCD队列与任务
- iOS 开发 多线程详解之GCD任务和队列
- 网络多线程-GCD队列组
- 理解GCD中任务和队列执行的原理
- GCD中的队列与任务
- 猫猫学iOS(五十一)多线程网络之GCD下载合并图片_队列组的使用
- GCD与多线程编程
- GCD与多线程编程
- 多线程GCD的详细讲解 任务和队列(串行队列,并发队列) (一)
- 多线程GCD的详细讲解 任务和队列(串行队列,并发队列)
- 多线程编程之GCD
- iOS多线程编程之GCD的使用
- Android LayoutInflater深度解析 给你带来全新的认识
- TextView 单行显示长文本
- 使用头部标记设置,3秒跳转到别的网站
- androidstudio连接夜神模拟器
- 蓝牙设备发现与同步(page and page scan详解)
- 苹果多线程网络编程之-GCD队列与任务的理解
- 提取视频文件首帧为jpeg 图片
- 笔记-集合
- indexOf() lastIndexOf() 与 jQuery.inArray()
- initWithCoder、awakeFromNib、initWithFrame
- 数据流中的中位数
- Activity 的启动流程分析
- Adapter中函数的调用顺序
- 队列,数组式