[/
          Copyright Oliver Kowalke 2009.
 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:overview Overview]

__boost_coroutine__ provides templates for generalized subroutines which allow
multiple entry points for suspending and resuming execution at certain
locations.
It preserves the local state of execution and allows re-entering subroutines more
than once (useful if state must be kept across function calls).

Coroutines can be viewed as a language-level construct providing a special kind
of control flow.

In contrast to threads, which are pre-emptive, __coro__ switches are
cooperative (programmer controls when a switch will happen). The kernel is not
involved in the coroutine switches.

The implementation uses __boost_context__ for context switching.

This library is a follow-up on
[@http://www.crystalclearsoftware.com/soc/coroutine/ Boost.Coroutine]
by Giovanni P. Deretta.

In order to use the classes and functions described here, you can either include
the specific headers specified by the descriptions of each class or function, or
include the master library header:

    #include <boost/coroutine/all.hpp>

which includes all the other headers in turn.

All functions and classes are contained in the namespace __coro_ns__.

__boost_coroutine__ depends on __boost_context__, __boost_exception__,
__boost_function_types__, __boost_move__, __boost_mpl__, __boost_optional__,
__boost_preprocessor__, __boost_range__, __boost_result_of__,
__boost_smart_ptr__, __boost_static_assert__, __boost_tuple__,
__boost_type_traits__ as well as __boost_utility__ and requires
__boost_version__.


[endsect]
