假設我有(很大)C++模塊在namespace foo
,它有很多(至少有一個)靜態數據,名稱空間全局數據和單例等等,分佈在無數的文件和目錄中。有沒有什麼辦法可以「整理」整個事物,以便同時運行獨立版本(即在同一個過程中)。在運行時將決定運行多少個版本。我可以沙盒使用靜態數據的名稱空間嗎?
我想過把所有東西都包裝在幾個命名空間中(例如bar1::foo
,bar2::foo
,...),但這是a)不可能的,因爲我不想觸摸所有文件,並且b)它不能讓我在運行時有一個任意數字。
更新:我在想也許我可以爲每個版本創建單獨的線程,但我不太熟悉線程。
作爲一個邊注:不,我沒有寫'foo'和是的,我知道,靜態/單身是邪惡的。 – bitmask 2012-03-13 00:30:39
+1,與第三方C接口有一次非常類似的問題。沒有找到一個好的解決方案(我的解決方案涉及多個宏生成的名稱空間)。 – 2012-03-13 01:14:07