Boost.Context 非同期処理を逐次的にする - Faith and Brave - C++で遊ぼう

公開:2012-04-12 05:45
更新:2020-02-15 04:37
カテゴリ:c++,ppl/concrt

継続が使えるようになることでうれしいのは、やはり非同期処理のコールバック地獄の解消です。
非同期処理は、処理が終わった時に呼ばれるコールバック関数を登録しますが、連続的な非同期処理をしようと思ったら非常に多くの関数を行ったり来たりして書かないといけません。ラムダ式を使うとネストの深い関数をどんどん定義していくことになるので、状況はさらに悪化します。
継続を使うとこれを解消することができます。

Boost.Context 非同期処理を逐次的にする - Faith and Brave - C++で遊ぼう.

継続を使うと非同期処理におけるコールバック処理が同期処理を行う程度に簡潔に書けるという話。

継続≒コルーチンという感じかな。PPLの継続もまあそうだろう。少なくとも目的は同じだ。

C++における継続の実装はもう何年も前からある(hamigaki::coroutineやBoost.Coroutineなど)が、必要性はそれほど感じなかった。非同期処理を多用する現在ではコードを簡潔に書けるということで継続が再びスポットライトを浴びつつあるようだ。yieldキーワードがほしいね。。