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