我有两个项目:
- 嵌入式一个,用 C++ 编写,使用大量静态/全局变量。
- 第二个,在PC上运行并使用与嵌入式相同的源代码。
它工作得很好。
但是现在第二个项目应该运行多个嵌入式项目实例。此外,每个实例都应该有自己的静态/全局变量副本,并且我应该能够在一个程序范围内与每个实例进行交互。我不知道如何使用所有静态/全局变量来做到这一点。
有什么简单的方法可以解决我的问题吗?
有几种方法可以解决这个问题:
生成多个进程(每个进程都有自己的一组全局变量)并设置它们与主程序之间的通信通道。
摆脱全局变量。最简单的方法是将它们全部转储到一个类中(作为非静态成员)并使用该类的实例来访问每组变量。
无论哪种方式,如果你有大量的全局变量,这都不是一个小问题。
正如其他答案所述,最好的解决方案是摆脱全局变量,但我知道这并不总是可行的。我在我们的代码库中遇到了完全相同的问题。
我使用的解决方案是将每个实例构建为单独的 DLL。然后加载我LoadLibrary()
在运行时加载的每个 DLL。通过这种方式,您可以让所有内容在单个进程中运行,并拥有相同全局变量和单例的多个版本。然后您不需要使用任何 IPC,但可以通过简单的函数调用在实例之间传递数据。它还使调试更容易,因为您可以在一个调试器中查看所有内容。
注意:我是在 Windows 上完成的,但我认为在 Unix 上也可以做到类似的事情。