public member function
<future>

std::packaged_task::make_ready_at_thread_exit

void make_ready_at_thread_exit (args... args);
调用存储的任务,在线程退出时使其就绪
调用存储的任务,将 args 作为参数转发,就像调用其 operator() 成员一样,但不同于调用完成后立即使共享状态就绪,而是使共享状态在线程退出时就绪。

如果一个与同一共享状态关联的 future 对象正在等待 future::get 的调用,它将保持阻塞直到线程结束。一旦线程结束,对 future::get 的调用将解除阻塞并返回或抛出异常。

请注意,调用此函数已设置共享状态中的值,任何在此调用和线程结束之间尝试修改此值的调用都将抛出 future_error,并将 promise_already_satisfied 作为错误条件

参数

args...
调用的参数。
Args...packaged_task 的模板参数,它们代表存储的任务的参数类型。

返回值

无。

数据竞争

*packaged_task*已被修改。
共享状态被修改为原子操作(不引起数据竞争),同步在线程结束时发生。

异常安全

基本保证:如果抛出异常,*packaged_task*处于有效状态。

此成员函数在以下条件下抛出异常
exception typeerror condition描述
future_errorfuture_errc::no_state该对象没有*共享状态*(它是*默认构造*的*packaged_task*)。
future_errorfuture_errc::promise_already_satisfied存储的任务已被调用
此成员函数还会在参数的任何复制或移动操作抛出异常时抛出,并且(取决于库实现)也可能抛出以报告其他情况。

另见