pthreads のようなユーザー レベルのスレッド ライブラリを作成しようとしています。私はmakecontext() / swapcontext()を使用してスレッド間の切り替えを行い、スレッドのコンテキストを作成しながら、コンテキストのuc_linkフィールドにuctx_mainを渡しています。
context.uc_stack.ss_sp = thread->c_stack;
context.uc_stack.ss_size = sizeof(thread->c_stack);
context.uc_link = &uctx_main;
ただし、スレッドが終了すると、セグメンテーション違反が発生します。私のメインプログラムはまだ実行中です。
また、誰かがuctx_mainとは何かを説明できますか? メイン関数のデフォルトのコンテキストですか? 作成するスレッドごとにuctx_mainが必要ですか? このようなばかげた質問をして申し訳ありませんが、ググっても何も見つかりませんでした。