Код: Выделить всё
inline static SharedData gSharedData;
У меня два вопроса:
1)Похоже, это gSharedData создается до запуска main(), например (
Код: Выделить всё
non-inline static
2) В проекте, над которым я работаю (большая база кода), который похож на приведенный ниже код, я наблюдаю несколько конструкторов вызовы из разных потоков, каждый из которых печатает свой адрес, что позволяет предположить, что создается более одного экземпляра! Насколько мне известно, создание статических переменных является потокобезопасным, начиная с C++11. Есть мысли или идеи, почему два потока создают один и тот же встроенный статический элемент?
Код: Выделить всё
#include
#include
class SharedData {
public:
SharedData() {
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79347137/c17-inline-static-member-instantiation-timing-lazy-instantiation-or-before-ma[/url]