Documentation Home >> Headers >> <jss/experimental_future.hpp> Header >> std::experimental::promise >> std::experimental::promise::set_value_at_thread_exit Member function

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>

See Also