检查是否经过了一定的时间

时间:2015-06-20 18:48:35

标签: c time

我目前正试图找出查看X秒是否过去的最佳方法。我想到的基本实现如下:

wait_for = 5;   // 5 seconds

ready_at = current_time() + wait_for;    // might wrap around! :(


...

/* There is no sleep call; there will be processing happening. */

...


if (current_time() >= ready_at)     // might also have wrapped around!
    do_stuff()

非常简单,对吧?问题在于流程本身将会运行很长时间,虽然wait_for时间相比之下会非常简短,但我担心current_time会缠绕并且事件不会触发。出于显而易见的原因,这段代码很难测试。

所以我的问题是:

  1. 什么是最佳时间分辨率方法?我更喜欢posix中的东西,但Linux兼容性足够好。十分之一秒的分辨率足够好了。 (也就是说,在特别糟糕的情况下,检查可能不会超过一个小时!)

  2. 如何正确处理两者的时间环绕 a)ready_at的计算,和 b)检查它是否准备好了?

  3. 提前点燃do_stuff()并非真正的选择。

    我很清楚这个的逻辑本身不应该太难,但我在这个问题上推理自己。我的心灵根本不会与我合作。

0 个答案:

没有答案