Boost.Coroutine2предоставляет шаблоны для обобщенных подпрограмм, которые позволяют приостановить и возобновить выполнение в определенных местах. Он сохраняет локальное состояние исполнения и позволяет повторно вводить подпрограммы более одного раза (полезно, если состояние должно храниться во всех вызовах функций).
Корутины можно рассматривать как конструкцию языкового уровня, обеспечивающую особый вид управления потоком.
В отличие от потоков, которые являются упреждающими,корутинныепереключатели являются кооперативными (программист управляет, когда переключатель произойдет). Ядро не участвует в корутинных переключателях.
Реализация используетBoost.Contextдля переключения контекста.
Чтобы использовать классы и функции, описанные здесь, вы можете либо включить конкретные заголовки, указанные в описаниях каждого класса или функции, либо включить главный заголовок библиотеки:
#include <boost/coroutine2/all.hpp>
который включает в себя все остальные заголовки в свою очередь.
Все функции и классы содержатся в пространстве именboost::coroutines2.
![[Note]](/img/note.png) |
Note |
Эта библиотека требует C++11! |