Init
This commit is contained in:
115
cppdraft/stopsource.md
Normal file
115
cppdraft/stopsource.md
Normal file
@@ -0,0 +1,115 @@
|
||||
[stopsource]
|
||||
|
||||
# 32 Concurrency support library [[thread]](./#thread)
|
||||
|
||||
## 32.3 Stop tokens [[thread.stoptoken]](thread.stoptoken#stopsource)
|
||||
|
||||
### 32.3.5 Class stop_source [stopsource]
|
||||
|
||||
#### [32.3.5.1](#general) General [[stopsource.general]](stopsource.general)
|
||||
|
||||
namespace std {class stop_source {public:// [[stopsource.cons]](#cons "32.3.5.2 Constructors, copy, and assignment"), constructors, copy, and assignment stop_source(); explicit stop_source(nostopstate_t) noexcept {}// [[stopsource.mem]](#mem "32.3.5.3 Member functions"), member functionsvoid swap(stop_source&) noexcept;
|
||||
|
||||
stop_token get_token() const noexcept; bool stop_possible() const noexcept; bool stop_requested() const noexcept; bool request_stop() noexcept; bool operator==(const stop_source& rhs) noexcept = default; private: shared_ptr<*unspecified*> *stop-state*; // *exposition only*};}
|
||||
|
||||
[1](#general-1)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L935)
|
||||
|
||||
*stop-state* refers to the stop_source's associated stop state[.](#general-1.sentence-1)
|
||||
|
||||
A stop_source object is disengaged when *stop-state* is empty[.](#general-1.sentence-2)
|
||||
|
||||
[2](#general-2)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L939)
|
||||
|
||||
stop_source models[*stoppable-source*](stoptoken.concepts#concept:stoppable-source "32.3.3 Stop token concepts [stoptoken.concepts]"),[copyable](concepts.object#concept:copyable "18.6 Object concepts [concepts.object]"),[equality_comparable](concept.equalitycomparable#concept:equality_comparable "18.5.4 Concept equality_comparable [concept.equalitycomparable]"), and[swappable](concept.swappable#concept:swappable "18.4.9 Concept swappable [concept.swappable]")[.](#general-2.sentence-1)
|
||||
|
||||
#### [32.3.5.2](#cons) Constructors, copy, and assignment [[stopsource.cons]](stopsource.cons)
|
||||
|
||||
[ð](#lib:stop_source,constructor)
|
||||
|
||||
`stop_source();
|
||||
`
|
||||
|
||||
[1](#cons-1)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L954)
|
||||
|
||||
*Effects*: Initializes *stop-state* with a pointer to a new stop state[.](#cons-1.sentence-1)
|
||||
|
||||
[2](#cons-2)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L958)
|
||||
|
||||
*Postconditions*: stop_possible() is true and stop_requested() is false[.](#cons-2.sentence-1)
|
||||
|
||||
[3](#cons-3)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L963)
|
||||
|
||||
*Throws*: bad_alloc if memory cannot be allocated for the stop state[.](#cons-3.sentence-1)
|
||||
|
||||
#### [32.3.5.3](#mem) Member functions [[stopsource.mem]](stopsource.mem)
|
||||
|
||||
[ð](#lib:swap,stop_source)
|
||||
|
||||
`void swap(stop_source& rhs) noexcept;
|
||||
`
|
||||
|
||||
[1](#mem-1)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L976)
|
||||
|
||||
*Effects*: Equivalent to:*stop-state*.swap(rhs.*stop-state*);
|
||||
|
||||
[ð](#lib:get_token,stop_source)
|
||||
|
||||
`stop_token get_token() const noexcept;
|
||||
`
|
||||
|
||||
[2](#mem-2)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L990)
|
||||
|
||||
*Returns*: stop_token() if stop_possible() is false;
|
||||
otherwise a new associated stop_token object;
|
||||
i.e., its *stop-state* member is equal to
|
||||
the *stop-state* member of *this[.](#mem-2.sentence-1)
|
||||
|
||||
[ð](#lib:stop_possible,stop_source)
|
||||
|
||||
`bool stop_possible() const noexcept;
|
||||
`
|
||||
|
||||
[3](#mem-3)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L1004)
|
||||
|
||||
*Returns*: *stop-state* != nullptr[.](#mem-3.sentence-1)
|
||||
|
||||
[ð](#lib:stop_requested,stop_source)
|
||||
|
||||
`bool stop_requested() const noexcept;
|
||||
`
|
||||
|
||||
[4](#mem-4)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L1015)
|
||||
|
||||
*Returns*: true if *stop-state* refers to a stop state
|
||||
that has received a stop request;
|
||||
otherwise, false[.](#mem-4.sentence-1)
|
||||
|
||||
[ð](#lib:request_stop,stop_source)
|
||||
|
||||
`bool request_stop() noexcept;
|
||||
`
|
||||
|
||||
[5](#mem-5)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L1028)
|
||||
|
||||
*Effects*: Executes a stop request operation ([[stoptoken.concepts]](stoptoken.concepts "32.3.3 Stop token concepts")) on
|
||||
the associated stop state, if any[.](#mem-5.sentence-1)
|
||||
Reference in New Issue
Block a user