首页 > 解决方案 > C++ 线程本地存储 - 在不同的编译单元中使用相同的名称

问题描述

假设我们在某个编译单元中有以下代码,最终在 Linux (g++ 4.9) 上编译为共享库

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

所以这被编译成 .so 并且它不会导出这个符号(使用隐藏的可见性)。

现在,一个特定的应用程序具有正在使用的同一段代码。即相同的 cpp 编译单元与此应用程序链接,它也访问上述共享库。

问题 - 这 2 个 myobj 实例是否位于 TLS 中的 2 个不同地址中?我认为是的,但我看到可能与上述配置有关的问题。

标签: c++thread-specific-storage

解决方案


推荐阅读