C++でコルーチン(2)

yuki
記事: 5
登録日時: 14年前

C++でコルーチン(2)

投稿記事 by yuki » 14年前

前のエントリーで、setjmp/longjmpでの実装を否定していましたが、
VC++の環境では可能なようです。
(エンコードされているのは、glibcのsetjmp/longjmpでした)
おかげで、インラインアセンブラは1命令(スタックポインタの書き換えだけ)で済みました。

というわけで困難に思っていたコルーチンですが、意外と簡単に実装できてしまいました。
しかし、問題発生。
もしかしてSTL使えない?
std::wstringもstd::vectorもstd::mapダメでした。
指定したスタックサイズよりも大きな配列を持つと同じエラーメッセージが出たので、
スタックの大きさが関係しているのでしょうか。

デストラクタを持つクラスをスタック上に生成するとダメみたいです(--;

もう少しテストを繰り返してからライブラリを作ろうと思います。
最後に編集したユーザー yuki on 2011年2月19日(土) 03:35 [ 編集 2 回目 ]

コメントはまだありません。