我正在尝试使用pthreads实现一种在C ++中存储和检索线程局部变量的简单方法。与Java中的ThreadLocal类似的东西。当我创建线程时,我得到了创建pthread_key_t的部分,但是如何从线程代码中的任何位置获取该值?我可以使用pthread_self来获取我的线程ID,但是一旦有了这个就可以获得TLS密钥吗?
P.S。:我知道Boost这样做,但我没有使用Boost
答案 0 :(得分:1)
您通常不会在创建线程时创建pthread_key_t
,而是在此之前的某个时间创建它并将密钥ID保存在某处。
完成后,每个线程都有自己的键内容值,您可以分别使用pthread_setspecific()
和pthread_getspecific()
来设置和获取内容。
答案 1 :(得分:0)
使用pthread_getspecific
代表调用线程返回当前绑定到指定键的值,并pthread_setspecific
将特定于线程的值与通过先前调用{{1}获得的键相关联}}