GCD

224 阅读1分钟

GCD队列

主队列 (main queue)

QOS_CLASS_USER_INTERACTIVE: user interactived等级表示任务需要被立即执行提供好的体验,用来更新UI,响应事件等.最好保持小规模

QOS_CLASS_USER_INITIATED:user initiated等级表示任务由UI发起异步执行.适用场景是需要及时结果同时又可以继续交互的时候

QOS_CLASS_UTILITY:uitlity等级表示需要长时间运行的任务,伴有用户可见进度指示器.经常会用来做计算、I/O、网络、持续的数据填充等任务.这个任务节能

QOS_CLASS_BACKGOUND:background等级表示用户不会察觉的任务,使用它来处理预加载,或者不需要用户交互和对时间不敏感的任务

dispatch_sync()

同步线程,不会开辟新的线程.如果改队列为串行队列,将会产生死锁.并发队列不会产生

dispatch_async()

异步线程,会开辟新的线程

dispatch_apply()

多线程的大量数据访问询问

dispatch_sources()

dispatch_barrier_async()

当运行的时候,不会去做其他事情.可以实现多读单写
多读单写
    异步栅栏,同步读数据,使用并发队列

dispatch_groups()

线程组,完成多个任务,在通知其他任务继续.
配合 dispatch_groups_notify()

队列

串行队列
并发队列