多线程总结之GCD基础

来源:互联网 发布:js执行href跳转action 编辑:程序博客网 时间:2024/06/05 03:28
/** *  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]);                // 子线程中执行    });    }



0 0
原创粉丝点击