现在的位置: 首页 > 综合 > 正文

线程的TLS有什么作用

2017年01月12日 ⁄ 综合 ⁄ 共 929字 ⁄ 字号 评论关闭
 TLS是一种机制,借由它,线程可以持有一个指针,指向它自己的一份数据结构拷贝.  
---------------------------------------------------------------  
 
线程区域储存空间  (TLS)  
 
 
多线程程序中的整体变量(以及任何被配置的内存)被程序中的所有线程共享。在一个函数中的局部静态变量也被使用函数的所有线程共享。一个函数中的局部动态变量是唯一于各个线程的,因为它们被储存在堆栈上,而每个线程有它自己的堆栈。  
 
对各个线程唯一的持续性储存空间有存在的必要,这就叫做线程区域储存空间。  
 
 
---------------------------------------------------------------  
 
Thread  Local  Storage是一个实现Thread的全局数据的机制,并且这些数据仅仅在这  
个Thread中可见,因为这些数据保存在该Thread的Thread  DataBase中:在每一个Thread    
DataBase中都定义了一个64元的DWORD数组用来保存这些数据。同时操作系统也提供了相应  
的函数来完成对这些数据的操作,如:TlsAlloc,TlsFree,TlsSetValue,TlsGetValue。  
 
       在MFC中,也提供了TLS功能,为此MFC设计了一系列的类和程序来完成这个任务。具体  
的程序在afxtls.cpp和afxtls_.h中。  
涉及到的主要的类有:  
class  CTypedSimpleList  :  public  CSimpleList  
struct  CThreadData  :  public  CNoTrackObject  
struct  CSlotData  
class  CThreadSlotData  
class  CThreadLocal  :  public  CThreadLocalObject  
       其中CThreadSlotData是封装TLS的最重要的类,CTypedSimpleList,CSlotData,CTh  
readDAta都是为了封装TLS而设计的只具有辅助功能的类。CThreadLocal是更高层的封装。  

抱歉!评论已关闭.