名前空間
変種
操作

std::stop_token

From cppreference.com
< cpp‎ | thread
 
 
並行性サポートライブラリ
スレッド
(C++11)
(C++20)
this_thread 名前空間
(C++11)
(C++11)
(C++11)
協調的なキャンセル
stop_token
(C++20)
排他制御
(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で非推奨)
アトミック操作のためのフリー関数
アトミックフラグのためのフリー関数
 
 
ヘッダ <stop_token> で定義
class stop_token;
(C++20以降)

stop_token クラスは、関連付けられた std::stop_source オブジェクトに対して停止要求が行われたか、または停止要求が可能であるかをチェックする手段を提供します。これは本質的に、関連付けられた停止状態の、スレッドセーフな「ビュー」です。

stop_tokenstd::stop_callback のコンストラクタに渡すこともでき、その場合、stop_token に関連付けられた std::stop_source が停止を要求されると、コールバックが呼び出されます。また、stop_tokenstd::condition_variable_any の中断可能な待機関数に渡すことができ、停止が要求された場合に条件変数の待機を中断します。

目次

[編集] メンバエイリアステンプレート

定義
callback_type<Callback> (C++26以降) std::stop_callback<Callback>

[編集] メンバ関数

新しい stop_token オブジェクトを構築する
(public メンバ関数) [編集]
stop_token オブジェクトを破棄する
(public メンバ関数) [編集]
stop_token オブジェクトを代入する
(public メンバ関数) [編集]
変更
2つの stop_token オブジェクトをスワップする
(public メンバ関数) [編集]
監視
関連付けられた停止状態が停止を要求されたかどうかをチェックする
(public メンバ関数) [編集]
関連付けられた停止状態が停止を要求できるかどうかをチェックする
(public メンバ関数) [編集]

[編集] 非メンバ関数

2つの std::stop_token オブジェクトを比較する
(関数) [編集]
std::swap アルゴリズムを特殊化する
(関数) [編集]

[編集] 備考

stop_token オブジェクトは通常、独立して構築されるのではなく、std::jthread または std::stop_source から取得されます。これにより、std::jthread または std::stop_source と同じ関連停止状態を共有します。

機能テストマクロ 規格 機能
__cpp_lib_jthread 201911L (C++20) 停止トークン結合可能なスレッド

[編集]

#include <iostream>
#include <thread>
 
using namespace std::literals::chrono_literals;
 
void f(std::stop_token stop_token, int value)
{
    while (!stop_token.stop_requested())
    {
        std::cout << value++ << ' ' << std::flush;
        std::this_thread::sleep_for(200ms);
    }
    std::cout << std::endl;
}
 
int main()
{
    std::jthread thread(f, 5); // prints 5 6 7 8... for approximately 3 seconds
    std::this_thread::sleep_for(3s);
    // The destructor of jthread calls request_stop() and join().
}

実行結果の例

5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
English 日本語 中文(简体) 中文(繁體)