本文主要是介绍us提升到ns级精度settimeofday()到clock_settime(),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
精度
clock_settime()精度比settimeofday()高,受限制于参数的结构体,一个是ns级精度,另一个us级精度。具体两个函数原因参考如下。
int clock_settime(clockid_t clk_id, const struct timespec *tp);
int settimeofday(const struct timeval *tv, const struct timezone *tz);
struct timespec {time_t tv_sec; /* seconds */long tv_nsec; /* nanoseconds */
};struct timeval {time_t tv_sec; /* seconds */suseconds_t tv_usec; /* microseconds */
};
着重介绍更好精度的clock_settime()、clock_gettime()函数。
头文件、函数和原型
#include <time.h>
int clock_getres(clockid_t clk_id, struct timespec *res);
int clock_gettime(clockid_t clk_id, struct timespec *tp);
int clock_settime(clockid_t clk_id, const struct timespec *tp);struct timespec {time_t tv_sec; /* seconds */long tv_nsec; /* nanoseconds */
};
介绍
函数clock_getres()寻找指定时钟clk_id的分辨率,如果res不未空,将通过res把clk_id的分辨率存入到结构体指针timespec内。时钟分辨率取决于实施和通过特定进程不可配置。如果 clock_settime()的参数 tp 指向的时间值不是 res 的倍数,则它将被截断为 res 的倍数。
函数clock_getttime()和clock_settime() 取回和设置指定时钟clk_id的时间。
其中clk_id参数是识别指定时钟并行动。时钟是系统范围,且所有程序可见或者单独成预处理测试时间。
CLOCK_REALTIME:所有执行支持系统范围的real-time时钟,从特定时代开始的代表的秒和纳秒。当时间开始改变,相关间隔定时器将不启作用,但是定时器的绝对点是起作用的。
时钟
CLOCK_REALTIME:
系统范围时钟测量一个实时时间(wall-clock).设置实时时钟需要合适的权限。实时时钟由于系统不连续跳跃所影响(例如,如果系统管理员经常修改实时时钟)和通过adjtime()增量调整和NTP。
CLOCK_MONITONIC:
时钟不能够被设置和正如POSIX所描述的单调时间–“过去一些未指定点”。在 Linux 上,该点对应于系统自启动以来运行的秒数。
返回值
返回值 | 结论 |
---|---|
0 | 成功 |
-1 | 失败 |
这篇关于us提升到ns级精度settimeofday()到clock_settime()的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!