Я определяю встроенный статический элемент данных в классе 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++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение