2.2 TLS,线程本地存储
在多线程编程中, 同一个变量, 如果要让多个线程共享访问, 那么这个变量使用时就需要注意线程安全问题;如果这个变量不想使多个线程共享访问, 那么该怎么办? 呵呵, 这个办法就是TLS, 线程本地存储,即使得变量的生命期局限在一个线程内,让线程独享变量。实施方法是,在变量名前中使用特定标识符限定。
比如,一个支持多操作系统、多线程代码编写的样式代码如下:
#ifdef WIN32
#define MT_TLS __declspec(thread)
#else
#define MT_TLS __thread
#endif
……
static MT_TLS int sqlNum; //定义一个线程本地存储的变量
……
这些变量,在多线程结构的代码中,将分别被存储在每个线程的独立空间,对每个线程而言,它们只是有着相同变量名却值不相同的。