iOS - GCD

2021-04-07  本文已影响0人  Gumball_a45f

GCD(Grand Central Dispatch) 介绍

GCD 函数

异步 dispatch_async

同步 dispatch_sync

GCD 队列

队列分为穿行队列并发队列

穿行队列(DISPATCH_QUEUE_SERIAL)

-任务串行执行,一个接一个

并发队列(DISPATCH_QUEUE_CONCURRENT)

GCD 函数与队列的关系

同步函数串行队列

同步函数并发队列

异步函数串行队列

异步函数并发队列

主队列同步函数

主线程因为你同步函数的原因等着先执⾏任务
主队列等着主线程的任务执⾏完毕再执⾏⾃⼰的任务
主队列和主线程相互等待会造成死锁

GCD 主队列与全局队列

主队列dispatch_get_main_queue();

全局并发队列dispatch_get_global_queue(0, 0)

//全局并发队列的获取方法
dispatch_queue_t globalQueue = dispatch_get_global_queue(0, 0);

//优先级从高到低(对应的服务质量)依次为
- DISPATCH_QUEUE_PRIORITY_HIGH       -- QOS_CLASS_USER_INITIATED
- DISPATCH_QUEUE_PRIORITY_DEFAULT    -- QOS_CLASS_DEFAULT
- DISPATCH_QUEUE_PRIORITY_LOW        -- QOS_CLASS_UTILITY
- DISPATCH_QUEUE_PRIORITY_BACKGROUND -- QOS_CLASS_BACKGROUND
- 第二个参数使用0

常规使用

//主队列 + 全局并发队列的日常使用
   dispatch_async(dispatch_get_global_queue(0, 0), >^{
       //执行耗时操作
       dispatch_async(dispatch_get_main_queue(), ^{
           //回到主线程进行UI操作
    });
   });

GCD常用函数

上一篇 下一篇

猜你喜欢

热点阅读