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

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

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

有帮助吗?

解决方案

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

它已经成为一个 事实上的 在分布式内存系统上运行的并行程序之间的过程中通信的标准。

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

其他提示

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

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

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

通常情况下,这可能发生在涉及某种RPC的情况。

恩,是的,还有的distcc。它GCC编译器分配。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top