std::stop_source:: request_stop
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Modifiers | ||||
|
stop_source::request_stop
|
||||
| Observers | ||||
| Non-member functions | ||||
| Helper tags | ||||
|
bool
request_stop
(
)
noexcept
;
|
(начиная с C++20) | |
Выдает запрос на остановку в состояние остановки, если объект
stop_source
имеет состояние остановки и для него еще не был запрошен останов.
Определение производится атомарно, и если была запрошена остановка, состояние остановки атомарно обновляется для предотвращения состояний гонки, таким образом:
-
stop_requested
(
)
и
stop_possible
(
)
могут быть параллельно вызваны на других
stop_tokenиstop_sourceтого же состояния остановки; -
request_stop
(
)
может быть параллельно вызван на других объектах
stop_source, и только один из них фактически выполнит запрос остановки.
Однако см. раздел Примечания.
Содержание |
Параметры
(нет)
Возвращаемое значение
true
если объект
stop_source
имеет состояние остановки и данный вызов выполнил запрос на остановку, в противном случае
false
.
Постусловия
stop_possible ( ) имеет значение false или stop_requested ( ) имеет значение true .
Примечания
Если
request_stop
(
)
действительно выдает запрос на остановку (т.е. возвращает
true
), то все
stop_callback
s, зарегистрированные для того же связанного состояния остановки, будут вызваны синхронно, в том же потоке,
request_stop
(
)
в котором был вызван. Если вызов callback завершается исключением,
std::terminate
вызывается.
Если объект
stop_source
имеет состояние остановки, но запрос на остановку уже был выполнен, эта функция возвращает
false
. Однако нет гарантии, что другой объект
stop_source
, который только что (успешно) запросил остановку, все еще не находится в процессе вызова функции
stop_callback
.
Если
request_stop
(
)
действительно отправляет запрос на остановку (т.е. возвращает
true
), тогда все переменные условия базового типа
std::condition_variable_any
, зарегистрированные с прерываемым ожиданием для
stop_token
, связанных с состоянием остановки
stop_source
, будут уведомлены.
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |