3

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

PS:我知道 Boost 会这样做,但我没有使用 Boost

4

2 回答 2

1

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

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

于 2013-08-14T15:53:14.363 回答
0

用于pthread_getspecific代表调用线程返回当前绑定到指定键的值,并将特定于pthread_setspecific线程的值与通过先前调用获得的键相关联pthread_key_create

于 2013-08-14T16:04:39.080 回答