2

編集は、以下の私の元の投稿が少し長かったかもしれないようです。

簡単に言うと、いくつかのAppDomainを生成して、それらが相互に通信できないようにすることはできますか?


RoboCup3Dと呼ばれる競争力のあるロボットサッカーシミュレーションリーグがあります。基本的なルールの1つは、エージェント間のすべての通信が中央サーバーを介して行われることです。このサーバーは、フィールドを通過するメッセージの距離や速度を制限するなど、シミュレーションのルールを適用します。

チームは複数のエージェントで構成されます。ルールでは、各エージェントは独自のプロセスで実行する必要があると規定されています。プロセス間通信を検出できるという理論的根拠。

私はTinManと呼ばれるRoboCup用の.NETライブラリを作成しました。来年初めて.NETで書かれた、参加しているチームの関連するメーリングリストについていくつかの話があります。余談ですが、Monoで実行されます。

CLRのような管理された環境では、主に単一のGCを実行することにより、CLRの単一のインスタンスですべてのエージェントを実行することでパフォーマンスが向上すると思います。その場合、同じプロセスの別々のAppDomainを使用することが許容されるかどうかという質問をしました。

AppDomain間の通信を検出(さらには防止)できるかどうかを知りたいのですが。もしそうなら、.NETで書かれたRoboCupチームが単一のプロセスでチームを実行できる可能性が高くなります。

4

1 に答える 1

1

AFAIK、いいえ。AppDomainはCLRによって管理されます。それを防ぐためにAppDomain間通信を傍受することはできません(たとえば、このコードはどのAppDomainで実行されますか?)

于 2011-11-15T01:27:01.117 に答える