std::this_thread:: sleep_until
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
定義先ヘッダ
<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
|
|