CppCon 2015 で、Microsoft の Gor Nishanov 氏は、C++ コルーチンは負のオーバーヘッドの抽象化になる可能性があると主張しました。彼の講演の論文はこちらです。
彼の例を見ると、コルーチンを使用する機能によってネットワーク コードの制御フローが簡素化され、コンパイラ レベルで実装すると、元のコードの 2 倍のスループットを持つ小さなコードが得られます。彼は、生成する能力は C++ 関数の機能であるべきだと主張しています。
これらは Visual Studio 2015 に初期実装されているため、ユースケースに合わせて試してみて、boost 実装と比較する方法を確認できます。ただし、Async/Yield キーワードを使用するかどうかは、まだハッシュ化しようとしているようです。そのため、標準がどこに向かうのかに注目してください。
C++ の再開可能な関数の提案はこちらで、更新はこちらで確認できます。残念ながら、それは c++17 にはなりませんでしたが、現在は技術仕様p0057r2になっています。利点としては、-fcoroutines_ts フラグを使用した clang と Visual Studio 2015 Update 2 でサポートされているようです。キーワードには co_ が付加されています。したがって、co_await、co_yield などです。
コルーチンは、golang、D、python、C# の組み込み機能であり、新しい Javascript 標準 (ECMA6) に含まれます。C++ がより効率的な実装を思いついた場合、golang の採用に取って代わるのではないかと思います。