c++ - 我可以沙箱使用静态数据的命名空间吗?

标签 c++ static singleton extensibility

假设我在命名空间 foo 中有(相当大的)C++ 模块,其中有很多(好吧,至少一个)静态数据、命名空间全局数据和单例等等,分布在各处无数的文件和目录。有没有什么方法可以“沙箱”整个事情,以便同时运行独立版本(即在同一进程中)。运行多少个版本将在运行时决定。

我考虑过将所有内容包装在多个命名空间中(例如 bar1::foobar2::foo...),但这是不可能的,因为我不想触及所有文件,并且 b) 它不会让我在运行时拥有任意数量。


更新:我想也许我可以为每个版本创建单独的线程,但我不太熟悉线程。

最佳答案

考虑将您的 foo 代码放入共享对象中。在运行时,您可以根据需要多次加载和卸载该共享对象。

有关动态加载共享对象的初始引用,请查看 http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html

关于c++ - 我可以沙箱使用静态数据的命名空间吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9676718/

相关文章:

c# - 如何在 C# 中使用结构体数组

java - 如何启用 Android GUI 以在启动后解锁 SIM PIN?

java - 在类的私有(private)静态最终变量中使用动态类名

swift - 如何在类外设置结构值?

java - Android 更适合单例吗?为什么?

c++ - 当函数返回值是指针并且返回类型是 C++ 中的引用时会发生什么?

c++ - 什么是纯C++

python - 为什么我不能让我的静态目录与 django 1.3 一起工作?

java - 使用静态 block 在没有主要功能的控制台中打印一些语句时

Android 应用程序 onCreate() 和 Intent.ACTION_PACKAGE_REPLACED