namespace std {
class stop_token;
}
概要
stop_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 |
非メンバ関数
名前 | 説明 | 対応バージョン |
---|---|---|
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);
}
xxxxxxxxxx
#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++: ??