队列:
一、串行队列;
二、并行队列;
队列负责任务的调度,不负责任务的执行;
队列的特点:
- 先进先出,排在前面的任务最先执行;
- 串行队列:任务按照顺序被调度,前一个任务不执行完毕,队列不会调度;
- 并行队列:只要有空闲的线程,队列就会调度当前任务,交给线程去执行,不需要考虑前面是否有任务正在执行,只要有线程可以利用,队列就会调度任务;
- 主队列:专门用来在主线程调度任务的队列,所以主队列的任务都在主线程来执行,主队列会随着程 序的启动一起创建;
- 全局队列:是系统为了方便程序员开发提供的,其工作表现与并发队列一致;
全局队列跟并行队列的区别
1、全局队列不需要考录释放,在需要的地方直接get就可以获取;
2、在MRC下,并行队列创建出来后,需要手动释放(dispatch_release());
任务:
一、同步任务;
- 不会开启新的线程,任务按顺序执行
二、异步任务;
-
会开启新的线程,任务可以并发的执行
任务在线程中执行;
队列和任务组合
一、串行队列、同步任务
image.png- 执行结果如下
结论:
串行队列、同步任务:不开启新线程,任务依次执行(one by one);
二、串行队列、异步任务
image.png- 执行结果
结论:
串行队列、异步任务:开启新线程,任务依次执行(one by one);
三、并行队列、同步任务
image.png- 执行结果
结论:
并行队列、同步任务:不开启新线程,任务依次执行(one by one);
三、并行队列、异步任务
image.png- 执行结果
网友评论