What's TLS?
TLS即Thread Local Storage。支持TLS的线程有三种类型的变量:线程局部变量,线程本地变量(TLS)和全局变量。TLS的不同之处:所有线程以同一个变量名或索引 访问TLS变量,但不同线程的TLS变量存储在不同的内存区域。简而言之,就是同一个名字,不同的存储。
例如,有TLS变量errno,每个线程执行相同的语句“errno=i;”,errno在不同线程下有了不同的值。注意,这并不是在每一个线程中都声明一个名为errno的变量。这正是TLS的便利之处 。
How to enable TLS?
If you would like to enable it, kernel config will now get new entry:
CONFIG_HAS_TLS_REG=y
Rebuild the kernel and apply patch: 'android-enable-tls.patch'
The attached patch contains the experimental changes to enable TLS in userspace (Android bionic and frameworks/base).