[/ / Copyright (c) 2003-2024 Christopher M. Kohlhoff (chris at kohlhoff dot com) / / Distributed under the Boost Software License, Version 1.0. (See accompanying / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) /] [section:higher_levels Higher Level Abstractions] [$boost_asio/higher_level_model.png [width 940px]] The asynchronous model presented in this section provides a basis for defining higher level abstractions. Boost.Asio builds on this core model to provide additional facilities, such as: * I/O objects such as [link boost_asio.overview.networking sockets] and [link boost_asio.overview.timers timers] that expose asynchronous operations on top of this model. * Concrete executors, such as the [link boost_asio.reference.io_context io_context] executor, [link boost_asio.reference.thread_pool thread_pool] executor, and the [link boost_asio.reference.strand strand] adapter which guarantees non-concurrent execution of completion handlers. * Completion tokens that facilitate different composition mechanisms, such as [link boost_asio.overview.composition.cpp20_coroutines C++ coroutines], [link boost_asio.overview.composition.spawn stackful coroutines], [link boost_asio.overview.composition.futures futures], and [link boost_asio.reference.deferred deferred operations]. * High level support for C++ coroutines that combines support executors and cancellation slots to allow for [link boost_asio.overview.composition.cpp20_coroutines.co_ordinating_parallel_coroutines easy coordination of concurrent asynchronous agents]. To allow users to more easily write their own asynchronous operations that adhere to this model, Boost.Asio also provides the helper function [link boost_asio.reference.async_compose async_compose]. [endsect]