C++で継続・コルーチン

タスク定義をどうするかが問題。なんとかcontinuation(継続)をC++でかけないものか。

必要なのは、いわゆるプログラムカウンタ(+レジスタ群)の保存と、スタック上のローカル変数データの保持。

FSMモデルならなんとかかけます。(参考:d:id:yaneurao:20040525)
保存が必要なデータはメンバ変数にすればOK。でもこれだとプログラムが恐ろしく汚くなるんだよな。

やりたいことはスタックポインタ入れ替えてsetjmpなんだけど、これのポータブルな実装を自前でやるのは絶望的すぎる。というか例外使ってるプログラムだとどうなるんだっけ?

と、書いてる途中にBinary Hacksに似たようなネタがあったのを思い出す。

ありましたありました。

Boost好きとしてはBoost::coroutineかと思いきや、draftっぽいので回避。
PCLとPthを検討してみます。