iOS 多线程(队列、任务、串行、并行、同步、异步)
1、GCD有两个用来执行任务的函数
- 同步(sync):只能在当前线程中执行任务,不具备开启新线程的能力,任务立刻马上执行,会阻塞当前线程并等待 Block中的任务执行完毕dispatch函数才会返回,然后当前线程才会继续往下运行。
- 异步(async):可以在新的线程中执行任务,具备开启线程的能力,但不一定会开启新的线程,dispatch函数会立即返回, 然后Block在后台异步执行,即当前线程会直接往下执行,不会阻塞当前线程。
2、队列
用于存放任务,分为串行队列和并行队列。
-
串行队列:所有任务会在一条线程中执行(有可能是当前线程也有可能是新开辟的线程),并且一个任务执行完毕后,才开始执行下一个任务。
-
并行队列:可以开启多条线程并行执行任务(但不一定会开启新的线程),并且当一个任务放到指定线程开始执行时,下一个任务就可以开始执行了
![](https://img2022.cnblogs.com/blog/775305/202208/775305-20220824161247246-1396165998.png)
![](https://img2022.cnblogs.com/blog/775305/202208/775305-20220824161259232-228259656.png)
https://www.jianshu.com/p/65fa622e4f20