实现精确的微秒级延时函数需要使用操作系统提供的高精度计时器。在 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 占用也非常小,一般不会产生明显的影响。

C++ 高精度微秒级延时函数实现 - 占用极低 CPU

原文地址: https://www.cveoy.top/t/topic/njAJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录