プリエンプティブな同一スレッド コンテキスト スイッチを実行する方法はありますか?
私が探しているものを説明する正しい方法ではないと確信しているので、ここに長い説明があります:
POSIXucontext_t
またはboost::context
. おそらく私が気づいていない他の人がいるでしょう。正式な用語はわかりませんが、基本的にシングルスレッドのマルチタスクが可能です。これらのライブラリはどちらも「協調」コードを必要とします。つまり、現在実行中の「スレッド」は明示的にコンテキスト切り替えを実行する必要があります。
コンテキストスイッチを強制する方法を探しています。これは、別のスレッド (実際の OS スレッド) から実行する必要があると思います。「コンテキスト」の配列、凍結された実行パスが必要であり、現在の実行を凍結して、選択した任意のパスに切り替えることができます。
ソリューションが「スイッチャー」に別のスレッドを使用するかどうかは気にしません (これは必須だと思います)。
Java/C#/C++/C ソリューション、または C/C++ といくつかの最小限のアセンブリの組み合わせで問題ありません。
クロス プラットフォーム (Windows および Linux) およびクロス コンパイラ (GCC、MinGW、および VS、ac/c++ ソリューションを想定) であることが望ましいですが、これが可能である可能性が低いことは承知しています。最低でも、少なくとも 1 つのコンパイラを備えた Windows で動作するはずです。
必要なほとんどすべてのライブラリまたは互換性レイヤーを使用しても問題ありません (たとえばboost
、ある種の「Windows 上の POSIX」レイヤー)。
これがあまり求めていないことを願っています。