C++ 高精度微秒级延时函数实现 - 占用极低 CPU
实现精确的微秒级延时函数需要使用操作系统提供的高精度计时器。在 Windows 系统上,可以使用 QueryPerformanceCounter 函数获取高精度计时器的计数值,然后使用 QueryPerformanceFrequency 函数获取计时器的频率,计算出每微秒对应的计数值,从而实现微秒级延时。
以下是一个示例代码实现:
#include <windows.h>
void usleep(int microseconds) {
static LARGE_INTEGER frequency = {0};
if (frequency.QuadPart == 0) {
QueryPerformanceFrequency(&frequency);
}
LARGE_INTEGER start, end;
QueryPerformanceCounter(&start);
long long count = frequency.QuadPart * microseconds / 1000000;
while (count > 0) {
QueryPerformanceCounter(&end);
count -= end.QuadPart - start.QuadPart;
start = end;
}
}
该函数使用静态变量缓存计时器频率,避免重复获取。在函数内部,先获取当前计时器的计数值,然后计算出需要延时的计数值,不断检查计时器的计数值,直到达到延时目标。
需要注意的是,该函数实现是基于 Windows 系统提供的计时器,因此可能在其他操作系统上无法使用。此外,由于使用了循环等待的方式实现延时,会占用一定的 CPU 资源,但是对于很短的延时时间,CPU 占用也非常小,一般不会产生明显的影响。
原文地址: https://www.cveoy.top/t/topic/njAJ 著作权归作者所有。请勿转载和采集!