Unix 環境ではmakecontext()/swapcontext()
、C でコルーチンを実装するために関数ファミリーが使用されることがあります。ただし、これらの関数は、スタックと実行フローを直接操作します。多くの場合、C から C++ に切り替えると、これらの低レベルの機能がまったく異なります。
makecontext()
問題は、 andを使用してコルーチンを実装する際に問題があるかどうかswapcontext()
です。もちろん、例外がそのようなコルーチンを決してエスケープできないように、非常に細心の注意を払う必要があることは明らかです。これは、スタックに例外ハンドラーがなく、プログラムが segfault になる可能性が高いためです。しかし、それ以外に、C++ が内部で物事を処理する方法と実行パスmakecontext()
を変更する方法との間に互換性がないことはありますか?setcontext()