多线程-GCD队列与同步/异步的特点

GCD的队列可以分为2大类型#####
  • 并发队列(Concurrent Dispatch Queue)
    可以让多个任务并发(同时)执行(自动开启多个线程同时执行任务)
    并发功能只有在异步(dispatch_async)函数下才有效
  • 串行队列(Serial Dispatch Queue)
    让任务一个接着一个地执行(一个任务执行完毕后,再执行下一个任务)
同步和异步决定了要不要开启新的线程#####
  • 同步:在当前线程中执行任务,不具备开启新线程的能力
  • 异步:在新的线程中执行任务,具备开启新线程的能力
并发和串行决定了任务的执行方式#####
  • 并发:多个任务并发(同时)执行
  • 串行:一个任务执行完毕后,再执行下一个任务
多线程-GCD队列与同步/异步的特点_第1张图片
各种队列的执行效果.png
队列参数说明:#####
/*   队列
参数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

你可能感兴趣的:(多线程-GCD队列与同步/异步的特点)