Скажем, у меня есть (довольно большой) модуль C ++ в namespace foo
, который имеет много (ну, по крайней мере, один) статических данных, глобальных данных пространства имен и синглетонов и так далее, распределенных по множеству файлов и каталогов,Есть ли способ «песочницы» всей этой вещи для запуска независимых версий в то же время (в том же процессе, то есть).Сколько версий должно быть запущено, будет решено во время выполнения.
Я думал о переносе всего в несколько пространств имен (например, bar1::foo
, bar2::foo
, ...), но это а) невозможно,так как я не хочу касаться всех файлов и б) это не позволило бы мне иметь произвольное число во время выполнения.
Обновление: я думал, что, возможно, я мог бы создать отдельный поток для каждой версии,но я не очень хорошо разбираюсь в темах.