この分野では活発な作業がないように思われるため、ユーザーランド スレッド ライブラリの作成を検討しています。C++0x の約束と未来がこのモデルに力を与える可能性があると思います。残念ながら、このモデルを機能させるには、ブロッキング呼び出しでコンテキスト スイッチを確実に切り替えることが不可欠です。そのため、非同期バージョンに置き換えるために、すべてのシステムコールをインターセプトしたいと考えています。いくつかの注意事項があります:
- ほぼすべての通常のシステムコールに非同期システムコールがあることは知っていますが、下位互換性の理由から、これは実行可能なソリューションではありません。
- Linux 2.4 以前では sys_call_table を直接変更することができましたが、これはなくなりました。
- 必要に応じてライブラリを静的にリンクしたいので、LD_PRELOAD トリックは実行できません。
- 同様に、これはユーザーランド ライブラリであると想定されているため、カーネル モジュールはオプションではありません。
- 最後に、同様の理由で ptrace() もオプションではありません。使用するためだけにライブラリに新しいプロセスをフォークさせることはできません。
これは可能ですか?