gpt4 book ai didi

ios - 全局队列的优先级是什么意思

转载 作者:行者123 更新时间:2023-11-28 19:03:00 32 4
gpt4 key购买 nike

我现在正在学习 GCD。我创建了两个具有不同优先级的全局队列:

dispatch_queue_t q1 = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_queue_t q2 = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0);

我执行两个队列:

dispatch_async(q1, ^{

[self task:@"q1"];

});

dispatch_async(q2, ^{

[self task:@"q2"];

});

- (void)task:(NSString *)taskid
{
for (int i = 0; i < 1000; i++) {

NSLog(@"Now executing taskid:%@ num : %d", taskid, i);

[NSThread sleepForTimeInterval:5];

}
}

但是结果显示两个队列并发执行,而不是优先级高的队列先执行。那么优先级到底意味着什么?

最佳答案

来自 DISPATCH_QUEUE_PRIORITY_HIGH 的文档:

Items dispatched to the queue run at high priority; the queue is scheduled for execution before any default priority or low priority queue.

所以来自不同队列的代码仍然可以并发运行,只是高优先级队列被安排在低优先级队列之前执行。由于两个队列可以设置在不同的线程中,所以两个线程可以一起运行。但是很有可能高优先级队列(线程)比低优先级队列(线程)有更多的机会完成。

计算 task: 运行(尝试多次迭代)需要多长时间(时钟时间)并查看高优先级队列是否比低优先级队列完成得更快可能会很有趣。

关于ios - 全局队列的优先级是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23096890/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com