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);

Preconditions:

*this has an associated asynchronous result.

Effects:

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.

Postconditions:

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.

Throws:

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.

Synchronization:

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.

Header

#include <experimental/future>

See Also