在c++中进行睡眠操作,平台:windows

Sleep operation in C++, platform : windows

本文关键字:操作 平台 windows c++      更新时间:2023-10-16

我想以毫秒为单位执行上述操作。我应该选择哪个库和函数调用?

泰。

或者如果您使用的是Visual Studio 2010(或其他支持c++0x的编译器),请使用

#include <thread>
#include <chrono>
std::this_thread::sleep();
// or
std::this_thread::sleep_for(std::chrono::milliseconds(10));

对于旧的编译器,您可以使用相关的Boost库

来获得相同的便利。

不用说这里的主要好处是可移植性和易于将延迟参数转换为"人"单位

可以使用Win32 API中的Sleep函数

Windows任务调度程序的粒度远远超过1ms(通常为20ms)。您可以通过使用性能计数器来测量在Sleep()函数中实际花费的时间来测试这一点。(使用QueryPerformanceFrequency()QueryPerformanceCounter()可以测量到纳秒级的时间)。注意,Sleep(0)使线程休眠的时间尽可能短。

但是,您可以通过使用timeBeginPeriod()并传递1ms周期来更改

行为。现在Sleep(0)应该返回更快。

注意,这个函数调用是为了以更好的精度播放多媒体流。我从来没有任何问题使用这个,但需要这么快的时期是相当罕见的。根据您想要达到的目标,可能有更好的方法来获得您想要的准确性,而不需要使用这种"hack"。

呃,sleep()函数从win32 api?

http://msdn.microsoft.com/en-us/library/windows/desktop/ms686298%28v=vs.85%29.aspx