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];