C++ Windows 如何让std::this_thread::sleep_for(std::chrono::milliseconds(20)); 保持高精度?
时间: 2024-10-24 16:09:31 浏览: 31
在Windows上使用C++编写的程序,如果你想使用`std::this_thread::sleep_for`函数精确地控制线程睡眠时间(如20毫秒),可以按照以下方式操作:
```cpp
#include <thread>
#include <chrono>
// 定义一个模板函数来指定不同的时间单位
template <class Rep, class Period>
void sleep_for_precise(const std::chrono::duration<Rep, Period>& duration)
{
std::this_thread::sleep_for(duration);
}
int main()
{
std::chrono::milliseconds twentyMillis(20); // 创建一个持续20毫秒的时间间隔
sleep_for_precise(twentyMillis); // 线程睡眠20毫秒
return 0;
}
```
在这个例子中,`std::chrono::milliseconds`是一个固定的时间间隔类型,可以直接传递给`sleep_for Precise`函数,以实现高精度的睡眠。
相关问题
std::this_thread::sleep_for(std::chrono::milliseconds(100));
这是一段 C++ 代码,使用了 C++11 提供的线程库,实现了让当前线程暂停执行 100 毫秒的功能。具体来说,std::this_thread::sleep_for 是一个函数模板,其参数是一个 std::chrono::duration 类型的时间间隔,表示暂停的时间长度,单位可以是秒、毫秒、微秒等。在这个代码中,我们使用了 std::chrono::milliseconds(100) 构造了一个 100 毫秒的时间间隔,作为 sleep_for 的参数,让当前线程暂停执行 100 毫秒。
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
这段代码使用了C++11的线程库,用于让当前线程休眠1秒钟。`std::this_thread::sleep_for`是一个函数模板,接受一个`std::chrono::duration`类型的参数,表示要休眠的时间长度。在这个例子中,使用了`std::chrono::milliseconds`表示1秒钟的时间长度。当调用这个函数后,当前线程会被暂停执行指定的时间,然后再继续执行后面的代码。
阅读全文