Skip to content

Latest commit

 

History

History
86 lines (67 loc) · 2.98 KB

stop_source.md

File metadata and controls

86 lines (67 loc) · 2.98 KB

stop_source

  • stop_token[meta header]
  • std[meta namespace]
  • class[meta id-type]
  • cpp20[meta cpp]
namespace std {
  class stop_source;
}

概要

クラスstop_sourceは、停止要求を作成するためのインターフェースを提供する。
また、自身と停止状態を共有するstop_tokenクラスのオブジェクトを構築できる。

備考

あるstop_sourceに対して作成した停止要求は、同じ停止状態を共有するほかのstop_sourcestop_tokenから可視になる。

一度停止要求を作成すると、それをあとで取り下げることはできない。また、それ以降に作成した停止要求は効果を持たない。

メンバ関数

名前 説明 対応バージョン
(constructor) コンストラクタ C++20
(destructor) デストラクタ C++20
operator= 代入演算子 C++20
swap 別のstop_sourceと交換する C++20
get_token 自身と停止状態を共有するstop_tokenを構築して返す C++20
stop_possible 停止要求を作成可能どうかを取得する C++20
stop_requested 停止要求を作成したかどうかを取得する C++20
request_stop 停止要求を作成する C++20

非メンバ関数

名前 説明 対応バージョン
operator== 等値演算子 C++20
operator!= 非等値演算子 C++20
swap 2つのstop_sourceオブジェクトを入れ替える C++11

#include <cassert>
#include <stop_token>

int main()
{
  std::stop_source ss;
  std::stop_token st = ss.get_token();

  bool invoked = false;
  std::stop_callback cb {st, [&] { invoked = true; }};

  assert(st.stop_requested() == false);
  assert(invoked == false);

  ss.request_stop();

  assert(st.stop_requested() == true);
  assert(invoked == true);
}
  • std::stop_source[color ff0000]
  • std::stop_token[link stop_token.md]
  • stop_callback[link stop_callback.md]
  • stop_requested()[link stop_token/stop_requested.md]
  • request_stop()[link stop_source/request_stop.md]
  • get_token()[link stop_source/get_token.md]

出力

バージョン

言語

  • C++20

処理系