如何从pthread ID中检索pthread_key_t?

时间:2013-08-14 15:48:42

标签: c++ pthreads

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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