最終更新日時(UTC):
が更新

履歴 編集

class
<stop_token>

std::stop_token(C++20)

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);
}

出力

バージョン

言語

  • C++20

処理系