...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Start a new stackful coroutine.
template< typename Handler, typename Function> void spawn( Handler handler, Function function, const boost::coroutines::attributes & attributes = boost::coroutines::attributes()); » more... template< typename Handler, typename Function> void spawn( basic_yield_context< Handler > ctx, Function function, const boost::coroutines::attributes & attributes = boost::coroutines::attributes()); » more... template< typename Function> void spawn( boost::asio::io_service::strand strand, Function function, const boost::coroutines::attributes & attributes = boost::coroutines::attributes()); » more... template< typename Function> void spawn( boost::asio::io_service & io_service, Function function, const boost::coroutines::attributes & attributes = boost::coroutines::attributes()); » more...
The spawn()
function is a high-level wrapper over the Boost.Coroutine library. This function
enables programs to implement asynchronous logic in a synchronous manner,
as illustrated by the following example:
boost::asio::spawn(my_strand, do_echo); // ... void do_echo(boost::asio::yield_context yield) { try { char data[128]; for (;;) { std::size_t length = my_socket.async_read_some( boost::asio::buffer(data), yield); boost::asio::async_write(my_socket, boost::asio::buffer(data, length), yield); } } catch (std::exception& e) { // ... } }
Header: boost/asio/spawn.hpp
Convenience header: None