GCD是iOS开发中常用的多线程技术,具有以下优点
- 可用于多核的并行运算。
- 会自动利用更多的 CPU 内核。
- GCD 会自动管理线程的生命周期(创建线程、调度任务、销毁线程)。
但是由于其知识点细碎,API繁多,所以笔者决定抽空以写博客的方式对GCD进行梳理,总结,归纳和再学习。 本章Demo
首先我们来谈谈几个基本概念
任务
任务就是要执行的操作,也就是你在线程中执行的那段代码。在 GCD 中是放在 block 中的。
队列
队列有两种:1.串行队列。2.并发队列。
-
串行队列(Serial Dispatch Queue): 每次只有一个任务被执行。让任务一个接着一个地执行。(只开启一个线程,一个任务执行完毕后,再执行下一个任务)
-
并发队列(Concurrent Dispatch Queue): 可以让多个任务并发(同时)执行。(可以开启多个线程,并且同时执行任务)
执行队列的方式
-
同步执行(sync):
- 同步添加任务到指定的队列中,在添加的任务执行结束之前,会一直等待,直到队列里面的任务完成之后再继续执行。
- 只能在当前线程中执行任务