Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Template packaged_task<>

Boost , Chapter 1. Fiber , Futures

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

<packaged_task<>>заворачивает вызывающую мишень, которая возвращает значение так, что возвращаемое значение может быть вычислено асинхронно.

Обычное использование<packaged_task<>>выглядит следующим образом:

  1. Обосновывать<packaged_task<>>шаблонными аргументами, соответствующими подписи вызывающего вызова. Позволяет обращаться кконструктору.
  2. Звони.<packaged_task::get_future()>и захват возвратившихся<future<>>Пример.
  3. Запустите<fiber>, чтобы запустить новый<packaged_task<>>, передав любые аргументы, требуемые исходным вызовом.
  4. Призывайте<fiber::detach()>к новому<fiber>.
  5. В более поздний момент извлеките результат из<future<>>.

Это, по сути, то, что<fibers::async()>инкапсулирует.

#include <boost/fiber/future/packaged_task.hpp>
namespace boost {
namespace fibers {
template< class R, typename ... Args >
class packaged_task< R( Args ... ) > {
public:
    packaged_task() noexcept;
    template< typename Fn >
    explicit packaged_task( Fn &&);
    template< typename Fn, typename Allocator >
    packaged_task( std::allocator_arg_t, Allocator const&, Fn &&);
    packaged_task( packaged_task &&) noexcept;
    packaged_task & operator=( packaged_task &&) noexcept;
    packaged_task( packaged_task const&) = delete;
    packaged_task & operator=( packaged_task const&) = delete;
    ~packaged_task();
    void swap( packaged_task &) noexcept;
    bool valid() const noexcept;
    future< R > get_future();
    void operator()( Args ...);
    void reset();
};
template< typename Signature >
void swap( packaged_task< Signature > &, packaged_task< Signature > &) noexcept;
}}
Default constructor packaged_task()
packaged_task() noexcept;

Effects:

Построение объекта класса<packaged_task>безобщего состояния.

Throws:

Ничего.

Templated constructor packaged_task()
template< typename Fn >
explicit packaged_task( Fn && fn);
template< typename Fn, typename Allocator >
packaged_task( std::allocator_arg_t, Allocator const& alloc, Fn && fn);

Effects:

Конструирует объект класса<packaged_taskобщим состояниеми копирует или перемещает вызывающую цель<fn>во внутреннее хранилище.

Throws:

Исключения, вызванные выделением памяти.

Note:

<Fn>должен иметь кабриолет возвратного типа<R>.

See also:

<std::allocator_arg_t>

Move constructor
packaged_task( packaged_task && other) noexcept;

Effects:

Создает упакованную задачу, перемещаяобщее состояниеиз<other>.

Postcondition:

<other>не содержит действительного общего состояния.

Throws:

Ничего.

Destructor
~packaged_task();

Effects:

Уничтожает<*this>и оставляетобщее состояние, если общее состояние готово; в противном случае сохраняет<future_error>с условием ошибки<future_errc::broken_promise>, как если бы<promise::set_exception()>: Единое государство готово.

Member function operator=()

packaged_task & operator=( packaged_task && other) noexcept;

Effects:

,,<*this>, [скрыто], [скрыто].

Postcondition:

<other>не содержит действительного общего состояния.

Throws:

Ничего.

Member function swap()

void swap( packaged_task & other) noexcept;

Effects:

,,<*this>, [<*this>, [<*this>].

Throws:

Ничего.

Member function valid()

bool valid() const noexcept;

Effects:

Возвращается<true>, если<*this>содержитобщее состояние.

Throws:

Ничего.

Member function get_future()

future< R > get_future();

Returns:

<future<>>с тем жеобщим состоянием.

Throws:

<future_error>с<future_errc::future_already_retrieved>или<future_errc::no_state>.

Member function operator()()

void operator()( Args && ... args);

Effects:

Вызывает сохраненную вызывающую цель. Любое исключение, брошенное вызывающей целью<fn>, хранится вобщем состоянии, как если бы<promise::set_exception()>. В противном случае стоимость, возвращенная<fn>, хранится в общем состоянии как<promise::set_value()>.

Throws:

<future_error>с<future_errc::no_state>.

Member function reset()

void reset();

Effects:

Сбрасываетобщее состояниеи отказывается от результата предыдущих казней. Построено новое общее государство.

Throws:

<future_error>с<future_errc::no_state>.

Non-member function swap()

template< typename Signature >
void swap( packaged_task< Signature > & l, packaged_task< Signature > & r) noexcept;

Effects:

То же самое<l.swap( r)>.


PrevUpHomeNext

Статья Template packaged_task<> раздела Chapter 1. Fiber Futures может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Futures ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 21:20:15/0.0093951225280762/1