Spec-Zone.ru › C++

std::stop_source::request_stop

bool request_stop() noexcept;
(since 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 будут вызваны синхронно в том же потоке, в котором был выдан request_stop(). Если вызов обратного вызова завершается исключением, вызывается std::terminate.

Если у объекта stop_source есть состояние остановки, но запрос на остановку уже был выполнен, эта функция возвращает false. Однако нет гарантии, что другой объект stop_source, который только что (успешно) запросил остановку, не находится еще в процессе вызова функции stop_callback.

Если объект request_stop() действительно выдает запрос на остановку (т.е., возвращает true), то все переменные состояния, базовый тип которых std::condition_variable_any, зарегистрированные с прерывимым ожиданием для stop_token связанных с состоянием остановки объекта stop_source, будут уведомлены.

Пример

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/thread/stop_source/request_stop

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API