Linux上等效于GetTickCount()的函数

34 投票
4 回答
42113 浏览
提问于 2025-04-15 23:27

我在找一个在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中获取单调时间持续时间?

撰写回答