asio C++ library

PrevUpHomeNext

Deferred Operations

The deferred, completion token takes a call to an asynchronous operation's initiating function and turns it into a function object that accepts a completion token. For example:

auto deferred_op =
  timer.async_wait(
    asio::deferred);
...
std::move(deferred_op)(
    [](asio::error_code ec){ ... });

or:

auto deferred_op =
  timer.async_wait(
    asio::deferred);
...
std::future<void> =
  std::move(deferred_op)(
    asio::use_future);

The deferred token also supports chaining, to create simple compositions:

auto deferred_op =
  timer.async_wait(
    asio::deferred(
      [&](asio::error_code ec)
      {
        timer.expires_after(
            std::chrono::seconds(1));

        return timer.async_wait(
            asio::deferred);
      });
...
std::future<void> = std::move(deferred_op)(asio::use_future);
See Also

deferred, deferred_t, Deferred examples (C++11), Deferred examples (C++14).


PrevUpHomeNext