У меня есть программа на C++, которая заставляет дочерние процессы выполнять некоторую работу. В этих дочерних процессов создаются некоторые классы и есть статическая переменная внутри функции-члена, как так:Статическая переменная C++ и несколько процессов
void MyClass::foo() {
static std::string uuid;
...
uuid = "A new value";
}
Поскольку каждый процесс свеже раздвоенный, я предположил, UUID всегда быть инициализированы как пустая строка. Однако в некоторых случаях я заметил, что uuid уже получил значение при первом входе функции, что вызывает проблемы.
Как эта статическая переменная может быть инициализирована для разветвленных процессов? И мой единственный вариант использования переменной класса? Причиной статической переменной является то, что я не хотел вводить переменные класса, которые используются только внутри одной функции, чтобы сохранить класс симпатичным и аккуратным.
Проверить ответ [здесь] (http://stackoverflow.com/questions/4879294/c-static-variables-and-linux-fork) – Chikei
MyClass не создается перед вилкой, но после этого ссылка не отвечает на мои вопрос. Я предположил, что статическая переменная всегда должна быть инициализирована пустой строкой, что не всегда так. Как это возможно? –
Что вы подразумеваете под «fork»? Такого не существует в стандарте C++. Если вы имеете в виду какую-то другую платформу/библиотеку, вы должны это сказать. –