C++ Windows 如何让std::this_thread::sleep_for(std::chrono::milliseconds(20)); 保持高精度?
时间: 2024-10-24 18:09:31 浏览: 41
在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(1000));
这段代码使用了C++11的线程库,用于让当前线程休眠1秒钟。`std::this_thread::sleep_for`是一个函数模板,接受一个`std::chrono::duration`类型的参数,表示要休眠的时间长度。在这个例子中,使用了`std::chrono::milliseconds`表示1秒钟的时间长度。当调用这个函数后,当前线程会被暂停执行指定的时间,然后再继续执行后面的代码。
std::this_thread::sleep_for(std::chrono::milliseconds(200));
`std::this_thread::sleep_for(std::chrono::milliseconds(200));`是一个C++中的函数调用,用于让当前线程休眠指定的时间。具体来说,它会使当前线程暂停执行,直到指定的时间间隔过去为止。
以下是一个示例演示如何使用`std::this_thread::sleep_for`函数来让当前线程休眠200毫秒(0.2秒):
```cpp
#include <iostream>
#include <thread>
#include <chrono>
int main() {
std::cout << "Before sleep" << std::endl;
std::this_thread::sleep_for(std::chrono::milliseconds(200));
std::cout << "After sleep" << std::endl;
return 0;
}
```
运行上述代码,你会看到在执行`std::this_thread::sleep_for`函数之前和之后分别输出了"Before sleep"和"After sleep"。在`std::this_thread::sleep_for`函数调用期间,当前线程会暂停执行200毫秒。
阅读全文