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