获取全局队列
DISPATCH_EXPORT DISPATCH_CONST DISPATCH_WARN_RESULT DISPATCH_NOTHROW
dispatch_queue_t
dispatch_get_global_queue(long identifier, unsigned long flags);
获取全局队列时,系统对外提供了 5 个级别的优先级
// 服务于与用户交互的优先级,该级别任务会占用几乎所有的时间片和 I/O 带宽。可以进行处理主事件循环、视图绘制、动画等操作,
* - QOS_CLASS_USER_INTERACTIVE
// 服务于用户发起并等待的优先级
* - QOS_CLASS_USER_INITIATED
// 默认的优先级
* - QOS_CLASS_DEFAULT
// 用户不太关心任务的进度,但是需要知道结果,比如下拉刷新操作
* - QOS_CLASS_UTILITY
// 用户不会察觉的任务,比如,预加载一些数据,
* - QOS_CLASS_BACKGROUND
DISPATCH_QUEUE_PRIORITY 和 QOS_CLASS 的对应关系如下所示:
* - 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
获取队列优先级
__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0)
DISPATCH_EXPORT DISPATCH_WARN_RESULT DISPATCH_NONNULL1 DISPATCH_NOTHROW
dispatch_qos_class_t
dispatch_queue_get_qos_class(dispatch_queue_t queue,
int *relative_priority_ptr);
获取队列优先级的结果比上面多个一种结果:
QOS_CLASS_UNSPECIFIED
如果这个队列是由 dispatch_queue_attr_make_with_qos_class() 返回的属性创建的,则返回创建时使用的优先级。其它的任何属性都会返回 QOS_CLASS_UNSPECIFIED
。
dispatch_queue_attr_make_with_qos_class
的用法如下:
dispatch_queue_t queue;
dispatch_queue_attr_t attr;
attr = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL,
QOS_CLASS_UTILITY, 0);
queue = dispatch_queue_create("com.example.myqueue", attr);