特定のニーズに合わせて最適化されたカスタムThreadPoolを作成しました。ただし、プロセスに複数のAppDomainがある場合、CLR ThreadPoolはすべてのAppDomain間で共有できるため、この動作を再現できるようにしたいと思います。
これは、分散ThreadPoolを作成するためにMarshalByRefObjectとRemotingを使用して実行できますが、カスタムスレッドプールの主な目標はパフォーマンスであるため、不要なオーバーヘッドが追加されるのではないかと心配しています。
もう1つの理論的な解決策は、アンマネージオブジェクトを使用してAppDomainのメモリ境界をハックすることです。私が正しければ、AppDomainのメモリ境界は管理対象オブジェクトにのみ適用されるため、各AppDomainに1つの管理対象ラッパーがあり、すべて同じ非管理対象オブジェクトを指している可能性があります。
だから私の質問は:
- 最小限のオーバーヘッドでリモート処理を使用してカスタムスレッドプールを作成する方法はありますか?
- そうでない場合、AppDomain間でアンマネージオブジェクトを共有することは可能ですか?