c++ - __thread 说明符在 C++ 类中不起作用

标签 c++ multithreading thread-local

我正在尝试使用 __thread 说明符来创建一个线程局部变量。这在以下代码中工作正常:

#include <stdio.h>
#include <pthread.h>

static __thread int val;

int main()
{
  val = 10;
}

但是如果我尝试在类中使用 __thread 说明符,如下所示:

#include <stdio.h>
#include <pthread.h>

class A
{
public:
  A();
  static __thread int val;
};

A::A()
{
  val = 10;
}

int main()
{
  A a;
}

我收到编译器错误:对“A::val”的 undefined reference

最佳答案

您只声明了静态变量;您还必须在类之外定义它(如果您有多个源文件,则只在一个源文件中):

int __thread A::val;

关于c++ - __thread 说明符在 C++ 类中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12320848/

相关文章:

c++ - 深度优先搜索的替代算法

java - 线程上下文中的缓存是什么以及何时在 Java 中使用 volatile 关键字?

java - 由其他线程更新的对象仅对另一个线程部分可见

java - 如果我在工厂类中实现 ThreadLocal 会发生什么

java - ThreadLocal 上的操作是否必须同步?

c++ - webrtc - GetStats() 使用空 RTCStatsReport 调用 OnStatsDelivered

c++ - 指向包含std::string的对象的指针上的无效指针调用析构函数

c++ - 如何确定 2 个 URI(路径)是否属于同一个分区或卷

sql-server - 我可以将长时间运行的存储过程分布在多个 CPU 上吗?

java - 我可以访问为线程池线程提交任务(并且正在运行)的线程吗?