32 Thread support library [thread] (original) (raw)
32.3 Stop tokens [thread.stoptoken]
32.3.3 Class stop_token [stoptoken]
32.3.3.1 General [stoptoken.general]
The class stop_token provides an interface for querying whether a stop request has been made (stop_requested) or can ever be made (stop_possible) using an associated stop_source object ([stopsource]).
A stop_token can also be passed to astop_callback ([stopcallback]) constructor to register a callback to be called when a stop request has been made from an associated stop_source.
namespace std { class stop_token { public: stop_token() noexcept; stop_token(const stop_token&) noexcept; stop_token(stop_token&&) noexcept; stop_token& operator=(const stop_token&) noexcept; stop_token& operator=(stop_token&&) noexcept;~stop_token();void swap(stop_token&) noexcept;[[nodiscard]] bool stop_requested() const noexcept;[[nodiscard]] bool stop_possible() const noexcept;[[nodiscard]] friend bool operator==(const stop_token& lhs, const stop_token& rhs) noexcept;friend void swap(stop_token& lhs, stop_token& rhs) noexcept;};}
32.3.3.2 Constructors, copy, and assignment [stoptoken.cons]
Postconditions: stop_possible() is false andstop_requested() is false.
[Note 1:
Because the created stop_token object can never receive a stop request, no resources are allocated for a stop state.
— _end note_]
stop_token(const stop_token& rhs) noexcept;
Postconditions: *this == rhs is true.
[Note 2:
*this and rhs share the ownership of the same stop state, if any.
— _end note_]
stop_token(stop_token&& rhs) noexcept;
Postconditions: *this contains the value of rhsprior to the start of construction and rhs.stop_possible() is false.
Effects: Releases ownership of the stop state, if any.
stop_token& operator=(const stop_token& rhs) noexcept;
Effects: Equivalent to: stop_token(rhs).swap(*this).
stop_token& operator=(stop_token&& rhs) noexcept;
Effects: Equivalent to: stop_token(std::move(rhs)).swap(*this).
void swap(stop_token& rhs) noexcept;
Effects: Exchanges the values of *this and rhs.
32.3.3.3 Members [stoptoken.mem]
[[nodiscard]] bool stop_requested() const noexcept;
Returns: true if *this has ownership of a stop state that has received a stop request; otherwise, false.
[[nodiscard]] bool stop_possible() const noexcept;
Returns: false if:
- *this does not have ownership of a stop state, or
- a stop request was not made and there are no associated stop_source objects;
otherwise, true.
32.3.3.4 Non-member functions [stoptoken.nonmembers]
[[nodiscard]] bool operator==(const stop_token& lhs, const stop_token& rhs) noexcept;
Returns: true if lhs and rhs have ownership of the same stop state or if both lhs and rhs do not have ownership of a stop state; otherwise false.
friend void swap(stop_token& x, stop_token& y) noexcept;
Effects: Equivalent to: x.swap(y).