名前空間
変種
操作

std::this_thread::sleep_until

From cppreference.com
< cpp‎ | thread
 
 
並行性サポートライブラリ
スレッド
(C++11)
(C++20)
this_thread 名前空間
(C++11)
(C++11)
(C++11)
sleep_until
(C++11)
協調的なキャンセル
排他制御
(C++11)
汎用ロック管理
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
条件変数
(C++11)
セマフォ
ラッチとバリア
(C++20)
(C++20)
future
(C++11)
(C++11)
(C++11)
(C++11)
安全なメモリ解放 (Safe Reclamation)
(C++26)
ハザードポインタ
アトミック型
(C++11)
(C++20)
アトミック型の初期化
(C++11)(C++20で非推奨)
(C++11)(C++20で非推奨)
メモリオーダー
(C++11)(C++26で非推奨)
アトミック操作のためのフリー関数
アトミックフラグのためのフリー関数
 
ヘッダ <thread> で定義
template< class Clock, class Duration >
void sleep_until( const std::chrono::time_point<Clock, Duration>& sleep_time );
(C++11以降)

指定された sleep_time に到達するまで、現在のスレッドの実行をブロックします。

ClockClock の要件を満たす必要があります。 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)
指定された時間だけ現在のスレッドの実行を停止する
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)