我创建了这样一个 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/