iOS 多线程GCD

一.简介编程

GCD (Grand Central Dispatch)是Apple开发的多核编程的解决方法。app

二.优势异步

1.GCD可用于多核的并行运算async

2.GCD自动利用更多CPU内核(双核,四核)spa

3.GCD自动管理线程的生命周期(建立线程、调度任务、销毁线程) ,只须要告诉GCD想要执行什么任务,不须要编写任何线程管理代码线程

三.使用code

1.建立一个队列(串行队列或并行队列)生命周期

// 串行队列的建立方法队列

dispatch_queue_t queue= dispatch_queue_create("test.queue", DISPATCH_QUEUE_SERIAL);开发

// 并行队列的建立方法

dispatch_queue_t queue= dispatch_queue_create("test.queue", DISPATCH_QUEUE_CONCURRENT);

//主队列 GCD自带的一种特殊的串行队列

//全部放在主队列中的任务,都会放到主线程中执行

//可以使用dispatch_get_main_queue()得到主队列

dispatch_queue_t queue = dispatch_get_main_queue();

2.将任务添加到队列中,而后系统就会根据任务类型执行任务(同步执行或异步执行)

// 同步执行任务建立方法

  dispatch_sync(queue, ^{

    // 这里听任务代码

  });

// 异步执行任务建立方法

  dispatch_async(queue, ^{

    // 这里听任务代码

  });

原理图表:

  并行队列 串行队列 主队列
同步(sync) 没有开启新线程,串行执行任务 没有开启新线程,串行执行任务 没有开启新线程,串行执行任务
异步(async) 有开启新线程,并行执行任务 有开启新线程(1条),串行执行任务 没有开启新线程,串行执行任务
 

四.其余使用

GCD的栅栏方法dispatch_barrier_async

GCD的延时执行方法dispatch_after

GCD的一次性代码(只执行一次)dispatch_once

GCD的快速迭代方法dispatch_apply

GCD的队列组 dispatch_group

相关文章
相关标签/搜索