ios - 为自定义创建的串行异步队列设置优先级

标签 ios objective-c multithreading grand-central-dispatch thread-priority

如何使用 GCD 为自定义创建的串行异步队列设置高优先级?

我看过this Q&A其中建议使用 dispatch_set_target_queue() 并传递高优先级队列 (DISPATCH_QUEUE_PRIORITY_HIGH),这是自定义串行异步队列的并发队列。

我的理解是,这将使串行队列上的所有任务并发执行。我的理解正确吗?如果是这样,替代解决方案是什么?

最佳答案

在 iOS 8 之前,将目标队列设置为高优先级队列是实现此目的的方法。即使目标队列是并发的,您的队列也将保持串行。

从 8.0 版开始,还有另一种方法可以做到这一点:

dispatch_queue_attr_t queueAttrs = dispatch_queue_attr_make_with_qos_class(
    DISPATCH_QUEUE_SERIAL,
    QOS_CLASS_USER_INITIATED /* Same as DISPATCH_QUEUE_PRIORITY_HIGH */, 
    0
);

dispatch_queue_t queue = dispatch_queue_create("myqueue",queueAttrs);

关于ios - 为自定义创建的串行异步队列设置优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26183030/

相关文章:

ios - 检查 UITextFields 集合中的文本字段是否为空

iphone - 取消通话后返回应用程序

c# - 在双核上使用 Parallel.For... 实现 5 倍性能?

objective-c - 具有非线程安全 CIFilter 的多线程

ios - 如何在 iOS 中使用 Crashlytics 而不使用 Fabric

iphone - 对象界面布局?

java - 对于可变引用字段中的不可变类型,使用 volatile 并本地缓存还是同步?

Java,补充迭代器或队列

objective-c - 当再次滚动表格 View 时,单元格显示为空白?

objective-c - Xcode 7 无法在设备上运行测试,发生 fatal error