iOS队列和任务

队列:

一、串行队列;
二、并行队列;
队列负责任务的调度,不负责任务的执行;

队列的特点:

  • 先进先出,排在前面的任务最先执行;
  • 串行队列:任务按照顺序被调度,前一个任务不执行完毕,队列不会调度;
  • 并行队列:只要有空闲的线程,队列就会调度当前任务,交给线程去执行,不需要考虑前面是否有任务正在执行,只要有线程可以利用,队列就会调度任务;
  • 主队列:专门用来在主线程调度任务的队列,所以主队列的任务都在主线程来执行,主队列会随着程 序的启动一起创建;
  • 全局队列:是系统为了方便程序员开发提供的,其工作表现与并发队列一致;
全局队列跟并行队列的区别
1、全局队列不需要考录释放,在需要的地方直接get就可以获取;
2、在MRC下,并行队列创建出来后,需要手动释放(dispatch_release());

任务:

一、同步任务;
  • 不会开启新的线程,任务按顺序执行
二、异步任务;
  • 会开启新的线程,任务可以并发的执行

    任务在线程中执行; 
    

队列和任务组合

一、串行队列、同步任务

image.png
  • 执行结果如下
image.png

结论:

串行队列、同步任务:不开启新线程,任务依次执行(one by one);

二、串行队列、异步任务

iOS队列和任务_第1张图片
image.png
  • 执行结果
image.png

结论:

串行队列、异步任务:开启新线程,任务依次执行(one by one);

三、并行队列、同步任务

image.png
  • 执行结果
image.png

结论:

并行队列、同步任务:不开启新线程,任务依次执行(one by one);

三、并行队列、异步任务

image.png
  • 执行结果
image.png

结论:

并行队列、异步任务:开启多个新线程,任务并发执行;

你可能感兴趣的:(iOS队列和任务)