std::this_thread::sleep_until
来自 cppreference.com
定义在头文件 <thread> 中 |
||
template< class Clock, class Duration > void sleep_until( const std::chrono::time_point<Clock, Duration>& sleep_time ); |
(自 C++11 起) | |
阻塞当前线程的执行,直到指定的 sleep_time 到达。
Clock
必须满足 Clock 要求。 如果 std::chrono::is_clock_v<Clock> 为 false,则程序格式错误。(自 C++20 起)
标准建议使用与 sleep_time 绑定的时钟,在这种情况下,时钟的调整可能会被考虑在内。因此,阻塞的持续时间可能比调用时的 sleep_time - Clock::now() 长或短,具体取决于调整的方向以及实现是否会遵守调整。由于进程调度或资源争用延迟,该函数也可能在 sleep_time 到达之后才阻塞。
内容 |
[编辑] 参数
sleep_time | - | 阻塞时间 |
[编辑] 返回值
(无)
[编辑] 异常
Clock
或 Duration
抛出的任何异常(标准库提供的时钟和持续时间永远不会抛出异常)。
[编辑] 示例
运行此代码
#include <chrono> #include <iostream> #include <thread> auto now() { return std::chrono::steady_clock::now(); } auto awake_time() { using std::chrono::operator""ms; return now() + 2000ms; } int main() { std::cout << "Hello, waiter...\n" << std::flush; const auto start{now()}; std::this_thread::sleep_until(awake_time()); std::chrono::duration<double, std::milli> elapsed{now() - start}; std::cout << "Waited " << elapsed.count() << " ms\n"; }
可能的输出
Hello, waiter... Waited 2000.17 ms
[编辑] 另请参见
(C++11) |
在指定时间持续时间内停止当前线程的执行 (函数) |
C 文档 for thrd_sleep
|