gpt4 book ai didi

ios - 多个 dispatch_after 不能很好地工作

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

像这样很容易延迟执行

double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
<#code to be executed on the main queue after delay#>
});

但是如果像

这样再放一个更长的延迟,它会使上面的代码无法执行
double delayInSeconds2 = 3.0;
dispatch_time_t popTime2 = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds2 * NSEC_PER_SEC);
dispatch_after(popTime2, dispatch_get_main_queue(), ^(void){
<#code to be executed on the main queue after delay#>
});

为什么只执行较长的一个而不是两个?还是我完全错了?

最佳答案

它是一个队列,但位置取决于 future 的开火时间而不是入队时间。

如果第二个是1秒,它会在第一个之前插入。

如果你想让它们并发执行(单核的时间片或多核cpu的真正并发),把它们放在不同的队列上。

关于ios - 多个 dispatch_after 不能很好地工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10895114/

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