线程局部变量使用

2 阅读1分钟

TLS概念

线程局部存储,多线程编程下内存管理技术,存储各个线程自身的全局变量,不同线程有自己的空间。可作为提升性能的手段。

4种存储模型

  • local-exec:对应汇编指令最少,性能最好,仅适用于主程序访问自身定义的线程局部变量;
  • initial-exec:用于程序初始化阶段加载的线程局部变量,性能仅次于local-exec模型,二者都属于静态存储模型;
  • local-dynamic:general-dynamic模型的一种优化;
  • general-dynamic:用于访问运行时通过dlopen动态加载共享库中的线程局部变量,性能开销最大,胜在灵活;

使用示例

thread_local __attribute__ ((tls_model("initial-exec"))) char var[100];