Store a value in the asynchronous result associated with *this
without making that result ready until the current
thread exits.
void promise<void>::set_value_at_thread_exit(); void promise<R&>::set_value_at_thread_exit(R& r); void promise<R>::set_value_at_thread_exit(R const& r); void promise<R>::set_value_at_thread_exit(R&& r);
*this
has an associated asynchronous result.
Store r
in the
asynchronous result associated with *this
if ResultType
is not void
. Mark
the asynchronous result as having a stored value. Schedule the
associated asynchronous result to be made ready
when the current thread exits.
The asynchronous result associated with *this
has a stored value, but is
not ready until the current thread exits.
Threads blocked waiting for the asynchronous result will be unblocked
when the current thread exits.
An exception of type std::future_error
with an error code of std::future_errc::promise_already_satisfied
if the asynchronous result already has a stored value or exception.
Any exceptions thrown by the copy-constructor or move-constructor
of r
.
Multiple concurrent calls to set_value()
,
set_value_at_thread_exit()
,
set_exception()
and set_exception_at_thread_exit()
are serialized. The completion
of the thread that made a successful call to set_value_at_thread_exit()
happens-before a call to std::experimental::future<ResultType>::get()
or std::experimental::shared_future<ResultType>::get()
which retrieves the exception
stored.
#include <experimental/future>