- 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_source
やstop_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
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??