首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET ApplicationDomain可以包含多个进程吗?

.NET ApplicationDomain可以包含多个进程吗?
EN

Stack Overflow用户
提问于 2014-06-18 14:10:10
回答 2查看 83关注 0票数 3

在.NET中,一个静态类成员是否可以被多个进程访问?我读过静态成员的作用域为ApplicationDomain,进程可以包含多个ApplicationDomains,但是我无法确认ApplicationDomain绝对仅限于单个进程。

我一直理解/相信进程是由操作系统高度隔离的。此外,在我所做的简单测试(使用Process.Create())中,不同进程中的静态成员似乎完全独立。然而,我在CodeReview.SE上收到的这个(非常有用的)CodeReview.SE让我怀疑是否可能失血过多。

更新:明确地说,我不想从多个进程访问静态成员。我只是想确定是否需要针对这种可能性进行编码。如果您对此问题的背景感兴趣,请参阅链接问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-18 16:16:39

静态变量属于单个appdomain。进程从不共享静态变量。您不需要对它进行编码。

默认情况下,进程是孤立的。您必须积极工作,以便在两个进程之间共享内存。CLR不尝试与其他进程通信。

票数 2
EN

Stack Overflow用户

发布于 2014-06-18 16:18:16

不,AppDomain不能在多个进程下运行。创建AppDomains是为了允许单个进程安全地隔离同一进程中的多个应用程序。因此,根据定义,AppDomain不能存在于多个进程中。

至于分享记忆,然而..。在进程之间有许多共享内存的方法。通常,在.NET中,如果您使一些东西是静态的,它将不会在进程(或应用程序域)之间共享。但是,通过本机代码,您可以通过多种机制共享内存页。汉斯已经提到内存映射文件。我不同意他们很难纠正的观点。我经常使用它们,从来没有太多的问题。

另一种方法是共享数据和代码段。如果您多次运行同一个应用程序,则任何共享段都可以在应用程序实例之间共享。在.NET中这样做并不容易,可能需要按摩最终的PE格式才能使其工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24287830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档