timeval结构及相关函数设计

332 阅读2分钟

这是我参与8月更文挑战的第10天,活动详情查看:8月更文挑战

相当多的操作对系统实时性有较高的要求,需要时间精度达到 ms 甚至 us 的精度。 但 Windows 等系统的特性决定了单纯依靠软件来得到高精度的定时事件是较为困难的。所以我们往往需要自己定义高精度的时间结构以获得相对高精确度的定时/计时性能,这些方法主要包括系统定时器等。而 Timeval 结构用于指定时间间隔。

struct timeval_t {
	int64_t tv_sec;
	int64_t tv_usec;
}

time

提供一些高精度时间函数。

函数概要

限定符和类型函数和说明
voidTime_Init 设置高精度时间可用
int64_tGetTime 返回时间戳(精确到微秒)
int64_tGetTimeDelta 返回时间差
voidSleep 进程挂起一段时间, 单位是秒
voidMSleep 进程挂起一段时间, 单位是微秒(百万分之一秒)

Time_Init

int64_t GetTime(void)void Time_Init(void)

初始化,设置高分辨率时间是否开启。

参数说明:

返回说明:

  • 用int64_t类型来存储时间,时间精度为毫秒

存在问题:

  1. 命名

改进方案:

  • 规范命名

GetTime

int64_t GetTime(void)

获取当前时间戳

参数说明:

返回说明:

  • 用int64_t类型来存储时间,时间精度为毫秒

存在问题:

GetTimeDelta

int64_t GetTimeDelta(int64_t start)

获取起始时间与当前时间的时间差

参数说明:

  • start -起始时间

返回说明:

  • 用int64_t类型来存储时间,时间精度为毫秒

存在问题:

Sleep

void Sleep(unsigned int s);

将进程挂起一段时间, 单位是秒。

参数说明:

  • s -挂起的时间

返回说明:

MSleep

void MSleep(unsigned int ms);

将进程挂起一段时间, 单位是毫秒。

参数说明:

  • s -挂起的时间

返回说明:

存在问题:

  1. Sleep和MSleep 功能和实现类似,可以合并

改进方案:

  • 添加参数,将两个函数合并为一个