Linux上等效于GetTickCount()的函数
我在找一个在Linux上和GetTickCount()
功能相似的东西。
现在我在用Python的time.time()
,这个函数可能是通过gettimeofday()
来获取时间的。我担心返回的时间(也就是Unix时间戳)可能会因为时钟被调整而不稳定,比如通过NTP(网络时间协议)来同步时间。其实我只需要一个简单的、系统的时间,它只会以固定的速度不断增加就可以了。
有没有类似的时间函数可以在C语言或Python中使用呢?
4 个回答
6
你应该使用:clock_gettime(CLOCK_MONOTONIC, &tp);
。这个调用不会受到系统时间调整的影响,就像Windows上的GetTickCount()一样。
8
这个看起来可以用:
#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() 是我应用程序的核心部分。它为每个“任务”都建立了一个状态机。比如说,它可以在不使用线程和进程间通信的情况下实现多任务处理。还可以实现非阻塞的延迟。
31
你可以在C语言中使用CLOCK_MONOTONIC,比如这样:
struct timespec ts;
if(clock_gettime(CLOCK_MONOTONIC,&ts) != 0) {
//error
}
如果你想用Python实现类似的功能,可以看看这个问题 - 如何在Python中获取单调时间持续时间?