public member function
<future>

std::promise::set_exception_at_thread_exit

void set_exception_at_thread_exit (exception_ptr p);
Set exception at thread exit
将异常指针 p 存储在共享状态中,但不立即使其就绪。相反,它将在线程退出时,在所有线程存储期对象销毁后自动使其就绪

如果与同一共享状态关联的 future 对象正在等待 future::get 调用,它将保持阻塞直到线程结束。线程结束时,它将抛出由 p 指向的异常对象。

请注意,调用此函数已经为共享状态设置了值,如果在本次调用与线程结束之间修改该值的任何调用都会抛出具有 promise_already_satisfied 作为错误条件future_error

参数

p
一个 exception_ptr 对象。
exception_ptr 是一种用于引用异常对象的智能指针类型。

返回值



数据竞争

promise 对象被修改。
共享状态被修改为原子操作(不会导致数据竞争)。

异常安全

基本保证:如果抛出异常,则 promise 对象处于有效状态。

此成员函数在以下条件下抛出异常
exception typeerror condition描述
future_errorfuture_errc::no_state该对象没有共享状态(它已被移动赋值
future_errorfuture_errc::promise_already_satisfied共享状态已存储值或异常
根据库实现的不同,此成员函数还可能抛出异常来报告其他情况。

另见