c++ - 如何从 pthread ID 检索 pthread_key_t?

标签 c++ pthreads

我正在尝试使用 pthreads 在 C++ 中实现一种简单的方法来存储和检索线程局部变量。类似于 Java 中的 ThreadLocal。我在创建线程时得到了创建 pthread_key_t 的部分,但是如何从线程代码中的任何位置获取该值?我可以使用 pthread_self 来获取我的线程 ID,但是一旦我有了这个,是否有可能获取 TLS key ?

P.S.:我知道 Boost 会这样做,但我没有使用 Boost

最佳答案

您通常不会在创建线程时创建 pthread_key_t,而是在此之前的某个时间创建一次并将 key ID 保存在某处。

完成后,每个线程都有自己的键内容值,您可以使用 pthread_setspecific()pthread_getspecific() 设置和获取内容分别。

关于c++ - 如何从 pthread ID 检索 pthread_key_t?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18236413/

相关文章:

c++ - 你如何使用 string.erase 和 string.find?

c++ - 如何将 pthread_t 映射到 pid(在 Linux 上)

c++ - Quest 库(Quest 身份验证服务)线程安全吗?

c - Pthread 同步问题

c++ - 二维数组作为函数的参数

c++ - b2 Shape 等于 0xCDCDCDCD,在 Create Fixture 时抛出异常

c - C 中 POSIX 线程运行时间和属性显示

c - 如何在QNX中找到线程的当前优先级

c++ - 尝试使用 giflib 对 GIF 文件进行编码

c++ - 无法弄清楚为什么它不会停止循环