假设我在命名空间 foo
中有(相当大的)C++ 模块,其中有很多(好吧,至少一个)静态数据、命名空间全局数据和单例等等,分布在各处无数的文件和目录。有没有什么方法可以“沙箱”整个事情,以便同时运行独立版本(即在同一进程中)。运行多少个版本将在运行时决定。
我考虑过将所有内容包装在多个命名空间中(例如 bar1::foo
、bar2::foo
...),但这是不可能的,因为我不想触及所有文件,并且 b) 它不会让我在运行时拥有任意数量。
更新:我想也许我可以为每个版本创建单独的线程,但我不太熟悉线程。
最佳答案
考虑将您的 foo
代码放入共享对象中。在运行时,您可以根据需要多次加载和卸载该共享对象。
有关动态加载共享对象的初始引用,请查看 http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html
关于c++ - 我可以沙箱使用静态数据的命名空间吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9676718/