GCD的队列可以分为2大类型#####
- 并发队列(Concurrent Dispatch Queue)
可以让多个任务并发(同时)执行(自动开启多个线程同时执行任务)
并发功能只有在异步(dispatch_async)函数下才有效 - 串行队列(Serial Dispatch Queue)
让任务一个接着一个地执行(一个任务执行完毕后,再执行下一个任务)
同步和异步决定了要不要开启新的线程#####
- 同步:在当前线程中执行任务,不具备开启新线程的能力
- 异步:在新的线程中执行任务,具备开启新线程的能力
并发和串行决定了任务的执行方式#####
- 并发:多个任务并发(同时)执行
- 串行:一个任务执行完毕后,再执行下一个任务
队列参数说明:#####
/* 队列
参数1: <#const char *label#> -->队列的名称
参数2: <#dispatch_queue_attr_t attr#> -->队列的属性
DISPATCH_QUEUE_SERIAL (串行)
DISPATCH_QUEUE_CONCURRENT (并行)
*/
dispatch_queue_t serialQueue = dispatch_queue_create("serial", DISPATCH_QUEUE_SERIAL);
自行创建的队列,通过设置队列名称,可以帮助我们快速定位Bug