相当于 Linux 上的 GetTickCount()
- 2024-11-14 08:29:00
- admin 原创
- 16
问题描述:
我正在寻找GetTickCount()
Linux 上的等效物。
目前我正在使用 Python,time.time()
它大概会调用gettimeofday()
。我担心的是,如果时钟被弄乱,例如被 NTP 弄乱,返回的时间(unix 纪元)可能会发生不规则变化。一个简单的进程或系统挂钟时间,只以恒定的速率正向增加就足够了。
C 或 Python 中是否存在这样的时间函数?
解决方案 1:
您可以在 C 中使用CLOCK_MONOTONIC ,例如:
struct timespec ts;
if(clock_gettime(CLOCK_MONOTONIC,&ts) != 0) {
//error
}
请参阅此问题以了解 Python 方法 -如何在 python 中获取单调时间持续时间?
解决方案 2:
这似乎有效:
#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() 是我应用程序的支柱。每个“任务”由一个状态机组成,例如,可以执行多任务而无需使用线程和进程间通信,可以实现非阻塞延迟。
解决方案 3:
您应该使用:clock_gettime(CLOCK_MONOTONIC, &tp);
。此调用不受系统时间调整的影响,就像 Windows 上的 GetTickCount() 一样。
解决方案 4:
是的,内核有高精度定时器,但情况有所不同。我建议您查看以可移植方式包装此定时器的任何奇怪项目的源代码。
我通常使用 C/C++#ifdef
并在 Linux 上使用gettimeofday()
,这样可以获得微秒级的分辨率。我经常将其作为分数添加到自纪元以来的秒数中,这样我得到的结果是双倍的。
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD