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 文件 關於 thrd_sleep
|