2

编辑似乎我下面的原始帖子可能有点长。

简单地说,我可以生成一些 AppDomain 并确保它们不能以任何方式相互通信吗?


有一个名为RoboCup 3D的竞技机器人足球模拟联赛。基本规则之一是代理之间的所有通信都通过中央服务器进行。该服务器强制执行模拟规则,例如限制跨场消息传递的距离和速率。

团队由几个代理组成。规则规定每个代理必须在自己的进程中运行。基本原理是可以检测到进程间通信。

为 RoboCup 编写了一个名为 TinMan 的 .NET 库。有一些关于明年首次用 .NET 编写的参赛团队的相关邮件列表的讨论。顺便说一句,它们将在 Mono 上运行。

在像 CLR 这样的托管环境中,我相信在单个 CLR 实例中运行所有代理会带来性能优势,这主要是因为运行单个 GC。如果是这种情况,我已经问过使用同一进程的单独 AppDomain 是否可以接受的问题。

我想知道是否可以检测(甚至阻止)AppDomains 之间的通信。如果是这样,那么用 .NET 编写的 RoboCup 团队更有可能在单个进程中运行他们的团队。

4

1 回答 1

1

AFAIK,不。AppDomain 由 CLR 管理;您不能拦截 AppDomain 间的通信以防止它(例如,此代码将在哪个 AppDomain 中运行?)

于 2011-11-15T01:27:01.117 回答