namespace std {
class stop_token;
}
概要
stop_tokenクラスは、停止要求が作成されたかどうか、あるいは停止要求が作成されうるかどうかなど、停止状態を問い合わせるためのインターフェースを提供する。
stop_tokenはstoppable_tokenのモデルである。
stop_sourceクラスのget_token()メンバ関数を呼び出すと、そのstop_sourceクラスのオブジェクトと停止状態を共有するstop_tokenクラスのオブジェクトを構築できる。これによって、stop_source側から停止要求を作成したときに、このstop_tokenを通じて停止状態を問い合わせられるようになる。
また、stop_tokenクラスは以下のクラスでも利用される:
stop_callback- 停止要求に応じて呼び出されるコールバックを登録する際に、コンストラクタで
stop_tokenを受け取る。
- 停止要求に応じて呼び出されるコールバックを登録する際に、コンストラクタで
condition_variable_any- 割り込み可能な待機処理を行う際に、
wait()メンバ関数でstop_tokenを受け取る。
- 割り込み可能な待機処理を行う際に、
メンバ関数
| 名前 | 説明 | 対応バージョン |
|---|---|---|
(constructor) |
コンストラクタ | C++20 |
(destructor) |
デストラクタ | C++20 |
operator= |
代入演算子 | C++20 |
swap |
別のstop_tokenと交換する |
C++20 |
stop_requested |
停止要求が作成されたかどうかを取得する | C++20 |
stop_possible |
停止要求が作成されうるかどうかを取得する | C++20 |
メンバ型
| 名前 | 説明 | 対応バージョン |
|---|---|---|
callback_type |
対応するコールバック型 | C++26 |
非メンバ関数
| 名前 | 説明 | 対応バージョン |
|---|---|---|
operator== |
等値演算子 | C++20 |
operator!= |
非等値演算子 | C++20 |
swap |
2つのstop_tokenオブジェクトを入れ替える |
C++20 |
例
#include <cassert>
#include <stop_token>
int main()
{
std::stop_source ss;
std::stop_token st = ss.get_token();
assert(st.stop_requested() == false);
ss.request_stop();
assert(st.stop_requested() == true);
}
出力
バージョン
言語
- C++20
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??