2011-11-16 68 views
1

.NET CLR如何处理同一程序的多个实例同时运行?.NET内存模型,同时运行同一程序的多个实例

我假定每个实例都是独立的,占用它自己的唯一内存空间,并且一个实例不会影响另一个实例。

有没有一个很好的资源在线(简单地!)解释了CLR如何处理这个问题及其影响?

+0

你究竟对什么感兴趣?我认为你的目标在这里太宽了...... –

+0

@DanielMošmondor - 我很想知道是否会在同一台机器上同时运行同一.NET程序的多个实例。我认为检查比假设更好!我想,没有,但我正在寻找解释这是如何做的事情,以便我能够理解并对答案充满信心。 –

+0

代码被加载,所以它是共享的,数据被创建,因此它是分开的。对于机器上的所有进程都是如此。除非你使用了一些IPC机制,比如共享内存,内存映射文件,套接字...... –

回答

2

相同应用程序的多个实例与不同应用程序的多个实例没有区别,只是它们碰巧从相同的文件中加载了它们的代码。

0

流程仍然是流程。 .Net只是一个在OS上运行的执行上下文。托管代码(IL)是在执行之前编译的JIT,实质上由CLR管理。最终,它仍然是实际流程中的真实代码。

1

编辑:阅读你自己的评论,你在找什么叫做“应用程序隔离”。这是通过“应用程序域”概念完成的。转到MSDN链接获取更多信息。

取决于过程主机(以下简称 “EXE” 本身,IIS,WAS,...)

但是你要寻找什么是 “应用程序域”。这是所有这些进程主机的常见模式。

MSDN:http://msdn.microsoft.com/en-us/library/2bh4z9hs.aspx

相关问题