以下叙述的仅是Windows NT,XP 等系统下实现线程局部存储的一个思路,并不是绝对的实现方法。
线程局部存储(Thread Local Storage,TLS),是多线程普及的情况下一个很有用的机制,该机制使得线程可以使用属于自己的全局变量。只需要在一个全局变量的定义前加上相应的关键字,即可指定一个全局变量为TLS属性的。
GCC:__thread int number;
Windows: __declspec(thread) int number;
在Windows 中,正常情况下一个全局变量或者静态变量会被放到 “.data”段或 ".bss"段中,但是当我们指定变量的属性为TLS时,编译器会将这些变量放在PE文件的 “.tls”段中。

本文详细介绍了Windows NT、XP等系统中线程局部存储(TLS)的工作原理,包括TLS变量的实际存储位置、线程如何查找TLS属性变量、TLS变量的构造与析构过程,以及对TLS数组中存储内容的探讨。通过TLS,每个线程都能拥有独立的全局变量副本,确保线程安全。
最低0.47元/天 解锁文章
1297

被折叠的 条评论
为什么被折叠?



