...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Create a group of operations that may be launched in parallel.
template< typename... Ops> parallel_group< Ops...> make_parallel_group( Ops... ops);
For example:
boost::asio::experimental::make_parallel_group( [&](auto token) { return in.async_read_some(boost::asio::buffer(data), token); }, [&](auto token) { return timer.async_wait(token); } ).async_wait( boost::asio::experimental::wait_for_all(), []( std::array<std::size_t, 2> completion_order, boost::system::error_code ec1, std::size_t n1, boost::system::error_code ec2 ) { switch (completion_order[0]) { case 0: { std::cout << "descriptor finished: " << ec1 << ", " << n1 << "\n"; } break; case 1: { std::cout << "timer finished: " << ec2 << "\n"; } break; } } );
Header: boost/asio/experimental/parallel_group.hpp
Convenience header: None