Ответ 1
Boost.Fiber был рассмотрен сообществом Boost в январе 2014 года и, как выяснилось, нуждался в значительной дополнительной работе. Просмотрите результаты обзора сообщества на http://lists.boost.org/boost-announce/2014/01/0393.php.
С++ 17 также использует WinRT, такую как модель потоковой передачи M: N, основанная на возобновляемых функциях с использованием предлагаемого ключевого слова ожидания. Microsoft внедрила поддержку в своем компиляторе, и помимо трюков для выделения магии памяти для фьючерсов это выглядит очень многообещающе. Соответствующим документом N является N4134 (http://www.open-std.org/Jtc1/sc22/wg21/docs/papers/2014/n4134.pdf), и, как вы увидите, если это принято, эта формулировка возобновляемых функций действительно обеспечит масштабируемость типа Erlang, даже если синтаксис немного тупое (эй, это С++, когда его синтаксис всегда прост!).
Конечно, если вам сейчас понадобится переносное решение, либо отправляйте маршрут без стекирования с ASIO (осторожно: он хрупкий), либо мелкозернистые обработчики ASIO с цепочками ASIO, используя экземпляр класса в качестве вашего состояния выполнения, которое является тем же самым или использовать Boost.Fiber в любом случае. Если вам нужна только Windows, я буду надаваться на собственные проприетарные расширения Microsoft, они очень не похожи на отказ от них, если они не откажутся от WinRT:)
Изменить: Автор Boost.Fiber сообщает мне, что с января 2015 года рекомендуемые изменения в обзоре сообщества завершены, и кроме улучшений документации Fiber считается готовым для включения в официальный Boost. Если это действительно так, то Fiber, вероятно, является лучшим решением, прежде чем официальная поддержка языка С++ 17 для окончательных возобновляемых функций появится в компиляторах.