...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
A promise<>
provides a mechanism to store a value (or
exception) that can later be retrieved from the corresponding future<>
object.
promise<>
and future<>
communicate via their underlying shared state.
#include <boost/fiber/future/promise.hpp> namespace boost { namespace fibers { template< typename R > class promise { public: promise(); template< typenameAllocator
> promise(std::allocator_arg_t
, Allocator); promise( promise &&) noexcept; promise & operator=( promise &&) noexcept; promise( promise const&) = delete; promise & operator=( promise const&) = delete; ~promise(); void swap( promise &) noexcept; future< R > get_future(); void set_value( R const&); // member only of generic promise template void set_value( R &&); // member only of generic promise template void set_value( R &); // member only of promise< R & > template void set_value(); // member only of promise< void > template void set_exception( std::exception_ptr p); }; template< typename R > void swap( promise< R > &, promise< R > &) noexcept; }
promise();
Creates a promise with an empty shared state.
Exceptions caused by memory allocation.
template< typenameAllocator
> promise(std::allocator_arg_t
, Allocator alloc);
Creates a promise with an empty shared
state by using alloc
.
Exceptions caused by memory allocation.
promise( promise && other) noexcept;
Creates a promise by moving the shared
state from other
.
other
contains no
valid shared state.
Nothing.
~promise();
Destroys *this
and abandons the shared state
if shared state is ready; otherwise stores future_error
with error condition future_errc::broken_promise
as if by promise::set_exception()
: the shared
state is set ready.
operator=
()
promise & operator=( promise && other) noexcept;
Transfers the ownership of shared state
to *this
.
other
contains no
valid shared state.
Nothing.
swap
()
void swap( promise & other) noexcept;
Swaps the shared state between
other and *this
.
Nothing.
get_future
()
future< R > get_future();
A future<>
with the same shared
state.
future_error
with
future_errc::future_already_retrieved
or future_errc::no_state
.
set_value
()
void set_value( R const& value); // member only of generic promise template void set_value( R && value); // member only of generic promise template void set_value( R & value); // member only of promise< R & > template void set_value(); // member only of promise< void > template
Store the result in the shared state and marks the state as ready.
future_error
with
future_errc::future_already_satisfied
or future_errc::no_state
.
set_exception
()
void set_exception( std::exception_ptr);
Store an exception pointer in the shared state and marks the state as ready.
future_error
with
future_errc::future_already_satisfied
or future_errc::no_state
.
swap()
template< typename R > void swap( promise< R > & l, promise< R > & r) noexcept;
Same as l.swap(
r)
.