C ++ Thread local storage - одно и то же имя, используемое в разных блоках компиляции - PullRequest
0 голосов
/ 09 июня 2018

Предположим, у нас есть следующий код в некотором модуле компиляции, который в конечном итоге скомпилирован в общую библиотеку в Linux (g ++ 4.9)

namespace A {
    class B {
       static __thread MyObj *myobj;
    };
}

Так что это скомпилировано в .so и не экспортирует этот символ(с использованием скрытой видимости).

Теперь конкретное приложение имеет тот же фрагмент кода, который используется.Т.е. тот же модуль компиляции cpp связан с этим приложением, которое также имеет доступ к вышеуказанной совместно используемой библиотеке.

Вопрос - эти 2 экземпляра myobj находятся в 2 разных адресах в TLS?Я предполагаю, что да, но я вижу проблемы, которые могут быть связаны с вышеуказанной конфигурацией.

...