2

我希望有人能帮我解决这个问题(英语不是我的母语,所以对于任何语法或拼写错误,我深表歉意):

作为我正在编码的项目的一部分,我需要为一些命令计时。更具体地说:我有 2 组命令(我们称它们为 set A 和 set B) - 我需要执行 set A,然后等待特定的毫秒数(在 set A 中计算),然后执行 set B。我做了它在组之间使用睡眠(时间)命令。

现在,我需要合并另一组命令(C 组),它们将在 A 组和 B 组之间循环运行,而不是简单地什么都不做。意思是,而不是程序之前空闲的时间(等待指定的毫秒数),我需要它循环 C 集 -但问题是它必须循环 C与它在空闲时间等待的时间完全相同.

我怎样才能在不使用线程的情况下做到这一点?(并且通常保持尽可能简单)

4

1 回答 1

1

我猜 C 中命令集的“工作时间”是已知的。C 是一个循环,它可以/应该在等待时间到期时完成。

在这种情况下,我建议使用性能计数器来倒计时等待时间。根据计算的内容和 C 中引入的开销,获得的精度可以在微秒范围内。

伪代码:

Delay = 1000
Do A
CounterBegin = GetCounter()
// and now the C loop
while ((GetCounter() - CounterBegin) < Delay) {
   Do C
}
Do B

注意:计数器值将使用计数器频率转换为时间。请参阅上面的链接以获取详细信息。

于 2012-08-29T10:07:03.977 回答