考虑下面的循环。这是我试图解决的问题的简化示例。我想限制每秒调用doSomething函数的次数。由于循环工作得非常快,我想我可以使用速率限制器。假设我通过使用不同的x数字运行它找到了一个合适的值。
unsigned int incrementionRate = x;
unsigned int counter == 0;
while (true) {
double seconds = getElapsedSeconds();
print(seconds);
counter = (counter + 1) % incrementionRate;
if (counter == 0) {
doSomething();
}
}
我想知道如果我在较低的时钟频率下工作,对doSomething函数的调用次数是否会更少。在这种情况下,我想将对doSomething函数的调用次数限制为每秒一次。我写的第二个循环如下。
float epsilon = 0.0001;
while (true) {
double seconds = getElapsedSeconds();
print(seconds);
if (abs(seconds - floor(seconds)) <= epsilon) {
doSomething();
}
}
这会对不同的时钟周期起到作用还是仍然存在问题?另外,我想知道是否有更好的方法来做到这一点。我以前从未使用过时钟频率,并试图了解在使用有限资源时关注点有何不同。
注意:使用睡眠不是一种选择。