|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Modifiers | ||||
| Observers | ||||
| Non-member functions | ||||
Defined in header <stop_token> | ||
class stop_token; | (since C++20) | |
Thestop_token class provides the means to check if a stop request has been made or can be made, for its associatedstd::stop_source object. It is essentially a thread-safe "view" of the associated stop-state.
Thestop_token can also be passed to the constructor ofstd::stop_callback, such that the callback will be invoked if thestop_token's associatedstd::stop_source is requested to stop. Andstop_token can be passed to the interruptible waiting functions ofstd::condition_variable_any, to interrupt the condition variable's wait if stop is requested.
Contents |
| Type | Definition |
| callback_type<Callback>(since C++26) | std::stop_callback<Callback> |
constructs newstop_token object(public member function)[edit] | |
destructs thestop_token object(public member function)[edit] | |
assigns thestop_token object(public member function)[edit] | |
Modifiers | |
swaps twostop_token objects(public member function)[edit] | |
Observers | |
| checks whether the associated stop-state has been requested to stop (public member function)[edit] | |
| checks whether associated stop-state can be requested to stop (public member function)[edit] | |
(C++20) | compares twostd::stop_token objects(function)[edit] |
(C++20) | specializes thestd::swap algorithm (function)[edit] |
Astop_token object is not generally constructed independently, but rather retrieved from astd::jthread orstd::stop_source. This makes it share the same associated stop-state as thestd::jthread orstd::stop_source.
| Feature-test macro | Value | Std | Feature |
|---|---|---|---|
__cpp_lib_jthread | 201911L | (C++20) | Stop token andjoining thread |
#include <iostream>#include <thread> usingnamespace std::literals::chrono_literals; void f(std::stop_token stop_token,int value){while(!stop_token.stop_requested()){std::cout<< value++<<' '<<std::flush;std::this_thread::sleep_for(200ms);}std::cout<<std::endl;} int main(){std::jthread thread(f,5);// prints 5 6 7 8... for approximately 3 secondsstd::this_thread::sleep_for(3s);// The destructor of jthread calls request_stop() and join().}
Possible output:
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19