我正在寻找一个相当于Linux上的GetTickCount()
。
目前我正在使用Python的time.time()
,这大概是通过gettimeofday()
来调用的。 我担心的是,返回的时间(unix时代),如果时钟与NTP混淆,可能会发生不正常的变化。 一个简单的过程或系统墙的时间,只有以恒定的速度正增加就足够了。
在C或Python中是否存在这样的时间函数?
你可以使用CLOCK_MONOTONIC例如在C:
struct timespec ts; if(clock_gettime(CLOCK_MONOTONIC,&ts) != 0) { //error }
看到这个问题的Python方式 – 如何获得单调的持续时间在Python?
这似乎工作:
#include <unistd.h> #include <time.h> uint32_t getTick() { struct timespec ts; unsigned theTick = 0U; clock_gettime( CLOCK_REALTIME, &ts ); theTick = ts.tv_nsec / 1000000; theTick += ts.tv_sec * 1000; return theTick; }
是的,get_tick()是我的应用程序的骨干。 每个“任务”包含一个状态机,例如可以不使用线程和进程间通信的多任务可以实现无阻塞延迟。
您应该使用: clock_gettime(CLOCK_MONOTONIC, &tp);
。 这个调用不受系统时间调整的影响,就像Windows上的GetTickCount()一样。
是的,内核具有高分辨率的计时器,但它是不同的。 我建议你看看任何奇怪的项目的来源,以便携方式包装这个项目。
从C / C ++我通常#ifdef
这个和在Linux上使用gettimeofday()
,这给我微秒的分辨率。 我经常把这个分数加到秒数以外,我也给了我一倍的时间。