在Windows操作系统上,线程睡眠时间小于1毫秒的精度通常不被保证。但是,您可以尝试以下方法来实现这一点:
QueryPerformanceCounter
和QueryPerformanceFrequency
。示例代码:
#include<iostream>
#include<windows.h>
void sleep_for_microseconds(int microseconds)
{
LARGE_INTEGER frequency;
LARGE_INTEGER start;
LARGE_INTEGER end;
QueryPerformanceFrequency(&frequency);
QueryPerformanceCounter(&start);
double elapsed_microseconds = 0;
while (elapsed_microseconds< microseconds)
{
QueryPerformanceCounter(&end);
elapsed_microseconds = static_cast<double>(end.QuadPart - start.QuadPart) / frequency.QuadPart * 1000000;
}
}
int main()
{
std::cout << "Sleeping for 500 microseconds..."<< std::endl;
sleep_for_microseconds(500);
std::cout << "Done sleeping!"<< std::endl;
return 0;
}
std::chrono
和std::this_thread::sleep_for
。示例代码:
#include<iostream>
#include<thread>
#include<chrono>
int main()
{
std::cout << "Sleeping for 500 microseconds..."<< std::endl;
std::this_thread::sleep_for(std::chrono::microseconds(500));
std::cout << "Done sleeping!"<< std::endl;
return 0;
}
请注意,这两种方法在实现微秒级别的休眠时,结果可能不会完全精确,因为操作系统本身的定时限制。要获得更高的精度,您可能需要使用实时操作系统(RTOS)。
领取专属 10元无门槛券
手把手带您无忧上云