【发布时间】:2012-03-13 00:24:17
【问题描述】:
假设我在namespace foo 中有(相当大的)C++ 模块,它有很多(嗯,至少一个)静态数据、命名空间全局数据和单例等等,分布在无数的文件和目录中.有什么方法可以“沙箱化”整个事情,以便同时运行独立版本(即在同一个过程中)。运行多少个版本将在运行时决定。
我曾考虑将所有内容包装在几个命名空间中(例如bar1::foo、bar2::foo、...),但这是 a) 不可能的,因为我不想接触所有文件,并且 b) 它不会使我能够在运行时拥有任意数字。
更新:我在想也许我可以为每个版本创建单独的线程,但我不太熟悉线程。
【问题讨论】:
-
附带说明:不,我没有写
foo,是的,我知道静态/单身人士是邪恶的。 -
+1,曾经在第 3 方 C 接口上遇到过非常相似的问题。没有找到好的解决方案(我的解决方案涉及多个宏生成的命名空间)。
标签: c++ static singleton extensibility