A promise<>
предоставляет механизм для хранения ценности (или исключения), которая позже может быть извлечена из соответствующего объекта будущее<>
. продюсировать<>
и футур<>
общаться через свое базовое состояние бритое.
#include <boost/fiber/future/promise.hpp>
namespace boost {
namespace fibers {
template< typename R >
class promise {
public:
promise();
template< typename Allocator
>
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&);
void set_value( R &&);
void set_value( R &);
void set_value();
void set_exception( std::exception_ptr p);
};
template< typename R >
void swap( promise< R > &, promise< R > &) noexcept;
}
promise();
- Effects:
Создает обещание с пустым общим состоянием.
- Throws:
Исключения, вызванные распределением памяти.
template< typename Allocator
>
promise( std::allocator_arg_t
, Allocator alloc);
promise( promise && other) noexcept;
- Effects:
Создает обещание, перемещая совместное состояние от другой
.
- Postcondition:
другая
не содержит действующего общего состояния.
- Throws:
Ничего.
~promise();
- Effects:
Уничтожает *это
и отказывается от общего состояния, если готово общее состояние; в противном случае хранит будущее_error
с условием ошибки future_errc::broken_promise
, как если бы по promise::set_ exception()
: общее состояние готово.
promise & operator=( promise && other) noexcept;
- Effects:
Передает право собственности на общее состояние на *это
.
- Postcondition:
другая
не содержит действующего общего состояния.
- Throws:
Ничего.
void swap( promise & other) noexcept;
future< R > get_future();
- Returns:
A future<>
с тем же shared state.
- Throws:
future_error
с future_errc::future_already_retrieved
или future_errc::no_state
.
void set_value( R const& value);
void set_value( R && value);
void set_value( R & value);
void set_value();
- Effects:
Сохранить результат в общем состоянии и отмечает состояние как готовое.
- Throws:
future_error
с future_errc::future_already_satied
или future_errc::no_state
.
void set_exception( std::exception_ptr);
- Effects:
Храните указатель исключения в общем состоянии и отмечает состояние как готовое.
- Throws:
future_error
с future_errc::future_already_satied
или future_errc::no_state
.
template< typename R >
void swap( promise< R > & l, promise< R > & r) noexcept;
- Effects:
То же, что и l.swap( r)
.