多线程总结之GCD基础
2015-08-10 13:38
253 查看
/** * GCD Grand Central Dispatch 伟大的中枢调度器 优势 1. 为多核的并行运算提出的解决方案 2. 自动利用更多的CPU内核 3. 自动管理线程的生命周期 (创建线程 调用任务 销毁线程) 4. 程序员只需告诉GCD想要干什么 */ // 任务 和 队列? // 任务 : 执行什么操作 // 队列 : 用来存放任务 // GCD的使用 /** * 1. 定制任务 2. 将任务添加到队列中 GCD会自动将队列的任务取出,放入到对应的线程中执行 任务的取出 FIFO原则 */ // GCD的函数 /** * dispatch_sync (dispath_queue_t queue,dispatch_block_t block); queue 队列 - 并发队列 (自动开启多个线程同时执行任务) 并发功能只能在异步函数才有效 - 串行队列 (让任务一个接着一个执行) 队列只决定任务的执行方式 block 任务 dispatch_async (dispath_queue_t queue,dispatch_block_t block); */ // 同步 异步 区别 // 同步:只能在当前线程中执行任务,不具备开启新线程的能力 // 异步:只能在当前线程中执行任务,具备开启新线程的能力
<pre name="code" class="objc">- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { // dispatch_sync 同一条线 同步 不具备开启线程的能力 // dispatch_async 同一条线 异步 不具备开启线程的能力 // 队列 不是决定你要不要开线程,它只是执行方式 // 获的全局的并发队列 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); // 将任务添加到全局队列中去异步执行 dispatch_async(queue, ^{ NSLog(@" --- download %@",[NSThread currentThread]); // 子线程中执行 }); dispatch_async(queue, ^{ NSLog(@" --- download1 %@",[NSThread currentThread]); // 子线程中执行 }); dispatch_async(queue, ^{ NSLog(@" --- download2 %@",[NSThread currentThread]); // 子线程中执行 }); dispatch_async(queue, ^{ NSLog(@" --- download3 %@",[NSThread currentThread]); // 子线程中执行 }); }
相关文章推荐
- 第一篇文章
- Linux | 管道
- git clone操作到开发机的错误记录
- 淘宝商品批量上传,商品批量复制到多个店,淘宝商品一键上传
- android 调用系统相机拍照返回Intent 为空的处理
- Leetcode61 Rotate List
- cron表达式
- 建造者模式之构建器
- 编译zlib遇到的问题 没有找到match686.obj
- JS中数组Array的用法{转载}
- SqlServer 数据库读写分离【转】
- 人物角色群体攻击判定(一)
- (4.1.29.1)Android 操作SQLite基本用法之SQLiteOpenHelper
- 线段树之ZOJ1610 Count the Colors
- Num 26 : HDOJ2187 : 悼念512汶川大地震遇难同胞——老人是真饿了 [ 贪心 ]
- poj 3254 种玉米 状压dp
- Lucas定理 大组合数取模
- 修改HTML5 input placeholder默认颜色
- 将pdf转换成html的方法
- 阿里巴巴2014校招笔试题-2013年9月14日