这里说的不是ssl里得安全传输协议。它的全名是Thread-Local Storage线程局部存储。又叫TSD:Thread-Specific Data线程特有数据池
在C/C++程序中常存在全局变量、函数内定义的静态变量以及局部变量,对于局部变量来说,在栈里,其不存在线程安全问题。但是全局变量和函数内定义的静态变量就不同了。 我们可以用锁来处理(但效率太低);可以通过原子操作来实现(但不支持自定义的数据类型)
TLS这一类型的数据,在程序中每个线程都会分别维护一份变量的副本(copy),并且长期存在于该线程中,对此类变量的操作不影响其他线程。
Linux中与TLS相关的API有如下:
#include <pthread.h>
// Returns 0 on success, or a positive error number on error
int pthread_once (pthread_once_t *once_control, void (*init) (void));
/*利用参数once_control的状态,函数pthread_once()可以确保无论有多少个线程调用多少次该函数,也只会执行一次由init所指向的由调用者定义的函数。
*/
// Returns 0 on success, or a positive error number on error
int pthread_key_create (pthread_key_t *key, void (*destructor)(void *));
// Returns 0 on success, or a positive error number on error
int pthread_key_delete (pthread_key_t key);
// Returns 0 on success, or a posit