相当于Linux上的GetTickCount()

我正在寻找一个相当于Linux上的GetTickCount()

目前我正在使用Python的time.time() ,这大概是通过gettimeofday()来调用的。 我担心的是,返回的时间(unix时代),如果时钟与NTP混淆,可能会发生不正常的变化。 一个简单的过程或系统墙的时间,只有以恒定的速度正增加就足够了。

在C或Python中是否存在这样的时间函数?

Solutions Collecting From Web of "相当于Linux上的GetTickCount()"

你可以使用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() ,这给我微秒的分辨率。 我经常把这个分数加到秒数以外,我也给了我一倍的时间。