promise Class
Describes an asynchronous provider.
Syntax
template <class Ty>
class promise;
Members
Public Constructors
Name | Description |
---|---|
promise | Constructs a promise object. |
Public Methods
Name | Description |
---|---|
get_future | Returns a future associated with this promise. |
set_exception | Atomically sets the result of this promise to indicate an exception. |
set_exception_at_thread_exit | Atomically sets the result of this promise to indicate an exception, and delivers the notification only after all thread-local objects in the current thread have been destroyed (usually at thread exit). |
set_value | Atomically sets the result of this promise to indicate a value. |
set_value_at_thread_exit | Atomically sets the result of this promise to indicate a value, and delivers the notification only after all thread-local objects in the current thread have been destroyed (usually at thread exit). |
swap | Exchanges the associated asynchronous state of this promise with that of a specified promise object. |
Public Operators
Name | Description |
---|---|
promise::operator= | Assignment of the shared state of this promise object. |
Inheritance Hierarchy
promise
Requirements
Header: <future>
Namespace: std
promise::get_future
Returns a future object that has the same associated asynchronous state as this promise.
future<Ty> get_future();
Remarks
If the promise object is empty, this method throws a future_error that has an error_code of no_state
.
If this method has already been called for a promise object that has the same associated asynchronous state, the method throws a future_error
that has an error_code
of future_already_retrieved
.
promise::operator=
Transfers the associated asynchronous state from a specified promise
object.
promise& operator=(promise&& Other) noexcept;
Parameters
Other
A promise
object.
Return Value
*this
Remarks
This operator transfers the associated asynchronous state from Other. After the transfer, Other is empty.
promise::promise Constructor
Constructs a promise
object.
promise();
template <class Alloc>
promise(allocator_arg_t, const Alloc& Al);
promise(promise&& Other) noexcept;
Parameters
Al
A memory allocator. For more information about allocators, see <allocators>.
Other
A promise
object.
Remarks
The first constructor constructs an empty promise
object.
The second constructor constructs an empty promise
object and uses Al for memory allocation.
The third constructor constructs a promise
object and transfers the associated asynchronous state from Other, and leaves Other empty.
promise::set_exception
Atomically stores an exception as the result of this promise
object and sets the associated asynchronous state to ready.
void set_exception(exception_ptr Exc);
Parameters
Exc
An exception_ptr that's stored by this method as the exception result.
Remarks
If the promise
object has no associated asynchronous state, this method throws a future_error that has an error code of no_state
.
If set_exception
, set_exception_at_thread_exit, set_value, or set_value_at_thread_exit has already been called for a promise
object that has the same associated asynchronous state, this method throws a future_error
that has an error code of promise_already_satisfied
.
As a result of this method, any threads that are blocked on the associated asynchronous state become unblocked.
promise::set_exception_at_thread_exit
Atomically sets the result of this promise
to indicate an exception, delivering the notification only after all thread-local objects in the current thread have been destroyed (usually at thread exit).
void set_exception_at_thread_exit(exception_ptr Exc);
Parameters
Exc
An exception_ptr that's stored by this method as the exception result.
Remarks
If the promise object has no associated asynchronous state, this method throws a future_error that has an error code of no_state
.
If set_exception, set_exception_at_thread_exit
, set_value, or set_value_at_thread_exit has already been called for a promise
object that has the same associated asynchronous state, this method throws a future_error
that has an error code of promise_already_satisfied
.
In contrast to set_exception, this method doesn't set the associated asynchronous state to ready until after all thread-local objects in the current thread have been destroyed. Typically, threads that are blocked on the associated asynchronous state aren't unblocked until the current thread exits.
promise::set_value
Atomically stores a value as the result of this promise
object and sets the associated asynchronous state to ready.
void promise::set_value(const Ty& Val);
void promise::set_value(Ty&& Val);
void promise<Ty&>::set_value(Ty& Val);
void promise<void>::set_value();
Parameters
Val
The value to be stored as the result.
Remarks
If the promise
object has no associated asynchronous state, this method throws a future_error that has an error code of no_state
.
If set_exception, set_exception_at_thread_exit, set_value
, or set_value_at_thread_exit has already been called for a promise
object that has the same associated asynchronous state, this method throws a future_error
that has an error code of promise_already_satisfied
.
As a result of this method, any threads that are blocked on the associated asynchronous state become unblocked.
The first method also throws any exception that is thrown when Val is copied into the associated asynchronous state. In this situation, the associated asynchronous state isn't set to ready.
The second method also throws any exception that is thrown when Val is moved into the associated asynchronous state. In this situation, the associated asynchronous state isn't set to ready.
For the partial specialization promise<Ty&>
, the stored value is in effect a reference to Val.
For the specialization promise<void>
, no stored value exists.
promise::set_value_at_thread_exit
Atomically stores a value as the result of this promise
object.
void promise::set_value_at_thread_exit(const Ty& Val);
void promise::set_value_at_thread_exit(Ty&& Val);
void promise<Ty&>::set_value_at_thread_exit(Ty& Val);
void promise<void>::set_value_at_thread_exit();
Parameters
Val
The value to be stored as the result.
Remarks
If the promise object has no associated asynchronous state, this method throws a future_error that has an error code of no_state
.
If set_exception, set_exception_at_thread_exit, set_value, or set_value_at_thread_exit
has already been called for a promise
object that has the same associated asynchronous state, this method throws a future_error
that has an error code of promise_already_satisfied
.
In contrast to set_value
, the associated asynchronous state isn't set to ready until after all thread-local objects in the current thread have been destroyed. Typically, threads that are blocked on the associated asynchronous state aren't unblocked until the current thread exits.
The first method also throws any exception that is thrown when Val is copied into the associated asynchronous state.
The second method also throws any exception that is thrown when Val is moved into the associated asynchronous state.
For the partial specialization promise<Ty&>
, the stored value is effectively a reference to Val.
For the specialization promise<void>
, no stored value exists.
promise::swap
Exchanges the associated asynchronous state of this promise object with that of a specified object.
void swap(promise& Other) noexcept;
Parameters
Other
A promise
object.