0

我们知道单个应用程序实例可以使用多个内核甚至多个物理处理器。对于云计算和集群计算,或者其他特殊场景,我不知道一个stance 是否可以跨多台计算机运行,或者跨多个OS 实例。

这对我来说很重要,因为除了被认为是糟糕的编程之外,我还使用了一些静态(如在 C# 中)(全局)变量,如果这些变量在计算机之间共享,我的程序可能会出现意外行为。

更新我会更具体:我正在编写一个 .NET 应用程序,它有一个变量来计算活动 IP 连接的数量,以防止连接数量不超过每台计算机的限制。我担心我是否将该应用程序部署在云计算主机中,是否每台计算机都有一个变量实例。

4

4 回答 4

2

如果你想学习如何实现这样的场景(跨多台计算机的单个实例),我认为你应该阅读一些关于MPI的文章。

它已成为模拟在分布式内存系统上运行的并行程序的进程之间通信的事实上的标准。

关于您的担忧:显然,您需要以某种方式有意识地更改程序以在多台计算机上作为一个实例运行。否则,当然不会发生共享,正如Shy 所写,没有什么可担心的。这种事情不会自动发生。

于 2009-01-13T17:01:36.717 回答
2

您使用的是什么编程环境(语言)?它应该准确定义“静态”的含义。很可能它不允许在不同计算机之间共享任何信息,除非通过诸如 MPI 或 RPC 之类的显式通道。

但是,抽象的高级环境可能会被设计为完全隐藏“在多台计算机上运行”的概念。可以想象设计一个可以在集群上运行的虚拟机,并且实际上在不同的物理机之间共享静态变量——但是在这种情况下,您的程序运行在单个虚拟机上,无论是运行在一台还是多台物理机上都应该没有任何区别。

于 2009-01-13T17:02:32.423 回答
1

如果您甚至无法想象会发生这种情况的情况,您为什么要担心呢?

通常,这可能发生在涉及某种 RPC 的场景中。

于 2009-01-13T16:53:10.710 回答
-2

嗯,是的,有 distcc。它是分布式的 GCC 编译器。

于 2009-01-13T17:24:36.357 回答