Я определяю встроенный статический элемент данных в классе C++17 (inline static SharedData gSharedData;).
У меня два вопроса:
1)Похоже, что создан экземпляр gSharedData до того, как main() начнется как (non-inline staticmember) и не ленивая инициализация (сначала используйте идиому). Код ниже вывода подтверждает это. Всегда ли это так для встроенных статических переменных?
2) В проекте, над которым я работаю (большая база кода с общими библиотеками), который похож на код ниже, я Я наблюдаю несколько вызовов конструктора из разных потоков, в отличие от вывода приведенного ниже кода, каждый из которых печатает свой адрес — предполагая, что создается более одного экземпляра! Насколько мне известно, создание статических переменных является потокобезопасным, начиная с C++11. Есть мысли или идеи, почему два потока создают один и тот же встроенный статический элемент?
#include
#include
class SharedData {
public:
SharedData() {
std::cout
Подробнее здесь: https://stackoverflow.com/questions/793 ... -before-ma
Время создания экземпляра встроенного статического члена C++17: ленивое создание экземпляра или перед main()? ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение