Spec-Zone.ru › C++

std::promise<R>::set_exception_at_thread_exit

void set_exception_at_thread_exit( std::exception_ptr p );
(начиная с C++11)

Сохраняет указатель на исключение p в общем состоянии, не переводя его немедленно в состояние готовности. Состояние становится готовым при завершении текущего потока, после уничтожения всех переменных с длительностью хранения, локальной для потока.

Операция ведёт себя так, как если бы set_value, set_exception, set_value_at_thread_exit и set_exception_at_thread_exit захватывали один мьютекс, связанный с объектом promise, при его обновлении.

Генерируется исключение, если общего состояния нет или если в общем состоянии уже хранится значение либо исключение.

Вызовы этой функции не приводят к гонкам данных с вызовами get_future (поэтому им не требуется синхронизироваться друг с другом).

Параметры

p - указатель на исключение, которое нужно сохранить. Поведение не определено, если p — nullptr

Возвращаемое значение

(нет)

Исключения

std::future_error в следующих случаях:

  • У *this нет общего состояния. Код ошибки устанавливается в значение no_state.
  • В общем состоянии уже хранится значение либо исключение. Код ошибки устанавливается в значение promise_already_satisfied.

Пример

См. также

set_exception
устанавливает результат, указывающий на исключение
(открытая функция-член)

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

Spec-Zone.ru

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