保姆级教程:用Qt和QThread打造一个工业级串口调试助手(支持多线程收发)
2026/4/19 22:15:21
在 Unix 系统中,进程不应依赖于固定的HZ值。不过,POSIX 定义了一种在运行时确定系统定时器频率的机制,代码示例如下:
long hz; hz = sysconf (_SC_CLK_TCK); if (hz == -1) perror ("sysconf"); /* 正常情况下不应发生 */此接口在程序需要确定系统定时器的分辨率时很有用,但在将系统时间值转换为秒时并非必需,因为大多数 POSIX 接口输出的时间测量值已经完成转换,或者是按固定频率缩放的,与HZ无关。在 x86 系统中,这个固定频率的值为 100,POSIX 中以时钟滴答数表示时间的函数使用CLOCKS_PER_SEC来代表该固定频率。
在实际使用中,计算机可能会意外关机甚至被拔掉电源,但重启后时间依然准确,这得益于大多数计算机配备的电池供电硬件时钟。当内核启动时,会从硬件时钟初始化当前时间;当用户关机时,内核会将当前时间写回硬件时钟。系统管理员还可以通过hwclock命令在其他时间点进行时间同步。
在 Unix 系统中管理时间涉及多个任务,部分任务是特定进程所关注的,主要包括:
1. 设置和获取当前挂钟时间
2. 计算经过时间
3. 让进程休眠指定时间
4. 进行高精度时间测量
5. 控制定时器