iphone - 如何修改自定义GCD队列的优先级?

标签 iphone ios concurrency grand-central-dispatch

我创建了这样一个 GCD 队列:

dispatch_queue_t q = dispatch_queue_create("com.testcompany.myqueue", NULL);

当我将任务分派(dispatch)到该队列时,它比在主线程上简单地执行任务要慢得多。

dispatch_async(q, ^(void) {
    [self performHeavyCalculationAndUpdateUI];
});

我怀疑队列默认的优先级很低。 如何更改此队列的优先级?或者还有其他我必须做的事吗?

最佳答案

调度队列没有您可以更改的优先级。

您可以使用 dispatch_set_target_queue 函数更改串行队列的目标队列,并使用DISPATCH_QUEUE_PRIORITY_HIGH 全局队列。这只是确保它会在任何其他以默认或低优先级排队的 block 之前被调度。一旦你的 block 开始执行,无论它被安排在哪个队列上,它都不会运行得更快或更慢。

您的问题很可能是您的 GUI 更新,请参阅 Robert Ryans 的回答。

关于iphone - 如何修改自定义GCD队列的优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9965018/

相关文章:

iphone - UIPicker 关闭后弹出 UIAlert

objective-c - 在 Core Data 中 10 秒后终止任务

ios - 如何将数据推送到 iPhone 应用程序?

java - 一个简单的多线程闹钟

objective-c - 什么是nsoperation?如何使用它?

c# - 围绕写入的锁定是否保证在另一个线程中进行新鲜读取? (.Net,内存模型)

iphone - 如何在 iphone 的 UITableView 中设置单元格的背景颜色?

ios - NSOperationQueue 和传递数据

ios - iPhone UITableView 在重用 UITableViewCell 时按下删除按钮后缺少披露按钮

iphone - 更新内部应用程序——iOS 企业开发者计划