Spec-Zone.ru › C++

std::stop_source::request_stop

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_callbacks, зарегистрированные для того же связанного состояния остановки, будут вызваны синхронно в том же потоке, в котором отправляется 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/cpp/thread/stop_source/request_stop

Spec-Zone.ru

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