我需要一种方法来获取自程序启动以来耗时(挂钟时间),以一种对用户干预系统时钟具有弹性的方式。
在 Windows 上,非标准的 clock() 实现不起作用,因为它似乎只是通过计算与启动时采样的时间的差异来工作,因此如果我“将时钟指针移回”,我会得到负值.
在 UNIX 上,clock/getrusage 指的是系统时间,而使用诸如 gettimeofday 之类的函数来采样时间戳与在 Windows 上使用时钟具有相同的问题。
我对精度并不真正感兴趣,并且我通过在后台旋转半秒分辨率计时器来抵消时钟偏差发生时的解决方案
(如果采样时间和预期时间之间的差异超过 1 秒,我将预期计时器用于新基线)但我认为必须有更好的方法。
最佳答案
我想你总是可以启动某种计时器。例如在Linux下一个线程
这将有一个这样的循环:
static void timer_thread(void * arg)
{
struct timespec delay;
unsigned int msecond_delay = ((app_state_t*)arg)->msecond_delay;
delay.tv_sec = 0;
delay.tv_nsec = msecond_delay * 1000000;
while(1) {
some_global_counter_increment();
nanosleep(&delay, NULL);
}
}
如果
app_state_t
是您选择的应用程序结构,您将存储变量。如果你想防止篡改,你需要确保没有人杀死你的线程关于c - 获取自进程开始以来耗时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/200663/