很容易延迟执行这样的事情
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#>
});
为什么只执行较长的一个而不是两个?或者我完全错了?
答案 0 :(得分:0)
它是一个队列,但位置取决于未来的开火时间而不是排队时间。
如果第二个是1秒,它将在第一个之前插入。
如果您希望它们同时执行(单核的时间片或多核cpu的真正并发),请将它们放在不同的队列中。