如何从pthread ID中检索pthread_key_t
How can you retrieve pthread_key_t from pthread ID?
我正在尝试实现一种使用pthreads在C++中存储和检索线程局部变量的简单方法。类似于Java中的ThreadLocal。当我创建线程时,我得到了创建pthread_key_t的部分,但我如何从线程代码中的任何位置获得该值?我可以使用pthread_self来获取线程ID,但一旦我有了这个,是否可以获取TLS密钥?
附言:我知道Boost可以做到这一点,但我没有使用Boost
创建线程时通常不会创建pthread_key_t
,而是在此之前创建一次,然后将密钥id保存在某个位置。
完成后,每个线程都有自己的键内容值,您可以分别使用pthread_setspecific()
和pthread_getspecific()
设置和获取内容。
使用pthread_getspecific
代表调用线程返回当前绑定到指定键的值,使用pthread_setspecific
将线程特定值与通过上一次调用pthread_key_create
获得的键相关联。
相关文章:
- 如果 KEY 是 std::list 或 std::vector 而不是值,那么 std::map 的默认行为是什么?
- 使用 Key 对 C++ 中的哈希映射进行排序. 无法排序
- 在 c++11 中为 pthread 设置调度参数
- std::<key-value>不同类型的对向量
- 如果不包含 pthread,为什么 GCC 的线程标准库实现会抛出异常?
- .value( "key" , default) 不适用于空的 json 对象吗?
- pthread只有在线程数量较少时才可以正常工作
- std::set<Key,Compare,Allocator>::find() 函数使用"<"运算符而不是"=="运算符背后的直觉是什么?
- pthread执行时间比顺序执行时间差
- std::move(key) 同时迭代unordered_map<字符串,字符串>?
- 使用 -pthread 如何不违反 ODR 规则?
- 使用 pthread 的多线程
- cpp / c ++中的grpc客户端代码,元数据x-api-key/x-goog-api-key不起作用,给了我语音A
- 销毁 pthread 互斥体和 C++ 中的取消初始化顺序
- 函数 AfxEndThread 中的读取访问冲突"pThread-> was nullptr"
- 锁定步进pthread互斥
- Pthread段错误,使用指向main中变量的指针
- pthread导致的内存泄漏
- GCC:--静态链接到pthread的整个存档配方在最近的GCC版本中停止工作
- 正确地编写一个类,并将pthread与vlc库和c++一起使用