1.串行队列特点
a.以先进先出的方式,顺序调度队列的任务
b.无论队列所指定的执行函数是同步还是导步,都会等上一个任务执行完成之后再执行下一个任务
dispatch_queue_t queue=dispatch_queue_create("zzh",DISPATCH_QUEUE_SERIAL);
2.并发队列特点:
a.以先进先出的方式,在并发调度队列中的任务执行
b.如果当前调度的任务是同步的,会等待任务执行完成后,才会去执行下一任务
c.如果当前调度的任务是异步的执行的,只要底层线程池中有可用的线程,就会马上去执行任务,不需要等待上一个任务的完成。
dispatch_queue_t queue=dispatch_queue_create("zzh", DISPATCH_QUEUE_CONCURRENT);
3.主队列特点:
a.专门用来调度主线程任务的队列
b.不会开启线程
c.以先进先出的方式,在主线程空闲时,才会调度队列中的任务在主线程执行
d.如果当前主线程在执行任务,那么无论主队列中被添加了什么任务,都不会被调度
dispatch_queue_t queue =dispatch_get_main_queue();
4.全局队列(是系统为了方便程序员开发提供的,其工作表现与并发队列一致)与并发队列的区别:
1.全局队列:
1.1没有名称
1.2无论ARC还是MRC都不需要考虑释放内存的问题
1.3日常开发建议使用全局队列2.并发队列
2.并发队列
2.1有名字,和NSThread的name属性类似
2.2如果在MRC开发的时候,需要使用dispatch_release(q);来释放相对的对象
2.3dispatch_barrier必须使用自定义的并发队列
2.4开发第三方框架的时候,建议使用并发队列
dispatch_queue_t queue =dispatch_get_global_queue(0,0);
网友评论