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.
Пример
См. также
| устанавливает результат, указывающий на исключение (открытая функция-член) |
© 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