我们知道单个应用程序实例可以使用多个内核甚至多个物理处理器。对于云和集群计算或其他特殊情况,我不知道单个站点是可以跨多台计算机运行,还是跨多个OS实例运行。
这对我来说很重要,因为除了被认为是错误的编程之外,我使用了一些静态(如在C#中)(全局)变量,如果这些变量,我的程序可能会有一个意外的行为在计算机之间共享。
更新我将更具体一点:我正在编写一个.NET应用程序,它有一个计算活动IP连接数的变量,以防止连接数没有超过每台计算机的限制。我担心如果我在云计算主机中部署该应用程序,如果我每个计算机都有一个变量实例。
答案 0 :(得分:2)
如果你想学习如何实现这样的场景(跨多台计算机的单个实例),我想你应该阅读一些关于MPI的文章。
它已成为事实上的标准 流程之间的沟通 建模一个运行在一个平行程序 分布式存储系统。
关于您的担忧:显然,您需要以某种方式有意识地将程序更改为在多台计算机上作为一个实例运行。否则,当然不会进行共享,而Shy writes则无需担心。这种东西不会自动发生。
答案 1 :(得分:2)
您使用的是哪种编程环境(语言)?它应该确切地定义“静态”的含义。最有可能的是,它不允许在不同计算机之间共享信息,除非通过MPI或RPC等显式通道。
但是,抽象的高级环境可能会被设计为完全隐藏“在多台计算机上运行”的概念。可以想象设计一个可以在集群上运行并且实际上在不同物理机器之间共享静态变量的虚拟机 - 但是在这种情况下,您的程序在单个虚拟机上运行,并且是否应该在一个或多个物理机器上运行没有任何区别。
答案 2 :(得分:1)
如果你甚至无法想象出现这种情况的情况,你为什么要担心呢?
通常,这可能发生在某种涉及RPC的场景中。
答案 3 :(得分:-2)
嗯,是的,有分心。这是分发的GCC编译器。