iOS GCD总结

2018-04-19  本文已影响0人  九歌之山鬼

1.为什么要使用GCD?

·GCD可用于多核的并行运算

·GCD会自动利用更多的CPU内核(双核  四核)

·GCD会自动管理线程的生命周期,不需要编写任何线程管理代码

2.GCD任务和队列

任务:

执行操作的意思,在线程中执行的代码

同步执行(sync)

·同步添加任务到指定的队列中,在添加的任务执行结束之前会一直等待,直到队列里面的任务完成之后再继续执行

·不开启新的线程

异步执行(async)

·异步添加任务到指定的队列中,不会做任何等待,可以继续执行任务

·可以在新的线程中执行任务,具备开启新线程的能力

队列(Dispatch Queue)

指执行任务的等待队列,即用来存放任务的队列。队列是一种特殊的线性表,采用FIFO先进先出的原则。

串行队列(Serial Dispatch Queue)

·依次逐一先后有序的执行(只开启一个线程,一个任务执行完毕后,再执行下一个任务)

并发队列(Concurrent Dispatch Queue)

·可以让多个任务并发(同时)执行(可以开启多个线程,并且同时执行任务)

主队列(Main Dispatch Queue)

·GCD提供的一种特殊的串行队列,所有放在主队列中的任务,都会放到主线程中执行。

3.使用GCD

·创建一个队列(串行队列或并发队列)

·将任务追加到任务的等待队列中,然后系统就会根据任务类型选择同步或者异步来执行任务

3.1队列的创建/获取方法

 dispatch_queue_create(<const char * _Nullable label>, <dispatch_queue_attr_t  _Nullable attr>)

·只用dispatch_queue_create来创建队列,需要传入两个参数。第一个参数表示队列的唯一标识符,用于DEBUG。第二个参数用来识别是串行队列还是并发队列。DISPATCH_QUEUE_SERIAL表示串行队列,DISPATCH_QUEUE_CONCURRENT表示并发队列。

3.2任务的创建方法

dispatch_sync(同步执行)

dispatch_async(异步执行)

上一篇下一篇

猜你喜欢

热点阅读