Boost.Context による単純なファイバー
いわゆる非対称コルーチン。C++03/11 両対応。
https://gist.github.com/3684731
簡単な使い方。
#include <iorate/fiber.hpp> int main() { iorate::fiber f([] { for (auto const c : "Hello, world!\n") { std::cout << c; iorate::fiber::yield(); } }); while (f.alive()) { f.resume(); } }
Boost.Context は trunk に入った当初は高レベル API を提供していたのですが、ある時を境にばっさり削除されてしまったという経緯があります(Boost.Contextの怒涛の変更 - にゃははー に詳しい)。おかげで Boost.Context でググって出てくる記事の多くは今では動かないコードだったり…。
まあ高レベル API は Boost.Coroutine あたりが Context ベースで書き直されて入ると思うので、もう少しの辛抱だと思います。