在 for 循环中休眠,总迭代时间为 2 分钟

Posted

技术标签:

【中文标题】在 for 循环中休眠,总迭代时间为 2 分钟【英文标题】:sleep in for loop for total iteration time of 2 minutes 【发布时间】:2015-02-11 17:16:39 【问题描述】:

我在 while (1) 中有一个 for 循环,我希望循环在每个整个 for 循环周期中平均大约 2 分钟。这需要根据迭代的执行时间和我的 2 分钟拍摄时钟中剩余的时间,在每次迭代之间休眠不同的时间。任何想法。

我正在走向某事

while(true)

   unsigned long begin_loop = OCX::micro_stamp();
   for (int i = 0; i < _vector.size(); i++) 
    
        unsigned long start = OCX::micro_stamp();
        unsigned long avg = ( ( begin_loop - start) / ( i + 1 ) );
        usleep ( ( 120000000 - ( (_vector.size() - i) * avg ) ) / ( _vector.size() - i ) );
        try
        



        
        catch 
        
   

【问题讨论】:

创建一个事件对象并在每次循环迭代结束时等待它。 我计划在每次迭代结束时睡觉,但需要知道如何计算每次迭代结束时的睡眠时间背后的数学原理,因为它会有所不同。 睡眠时间类似于120 - (now - topOfLoopTime).TotalSeconds 这将导致第一次迭代休眠很长时间,而最后一次根本不休眠。 我正朝着类似上面的方向发展 【参考方案1】:

在每次迭代结束时,休眠

((120000000 - total elapsed microseconds) / (vector.size() - i))

【讨论】:

【参考方案2】:

在每次迭代结束时,休眠 ((120 - 总经过时间) / (vector.size() - i))

【讨论】:

以上是关于在 for 循环中休眠,总迭代时间为 2 分钟的主要内容,如果未能解决你的问题,请参考以下文章

每次while/for循环迭代后如何等待一秒钟?

在 for 循环的某些迭代中,字符串的长度为 0,而在其他迭代中则为 0

23_迭代器模拟For循环

for循环及break和continue的区别

是否为每次迭代创建了 for 循环内的引用变量声明? [复制]

python中def内的for循环不会迭代