TLS 编程一

TLS是什么?引用别人说的

TLS(Thread Local Storage,线程局部存储)是一种便利的编程机制。我们通常不使用,因此并不太关心。但是要压缩的原程序可能会用到它。事实上,Delphi 总是使用它,如果我们打算支持 Delphi 程序,最好兼容它。

TLS是Thread Local Storage(线程局部存储)的简称,是一项解决多线程内部变量使用问题的技术。用于将某些数据和一特定线程关联起来,即,这些数据为关联线程所独有(私有)。在多线程编程中, 同一个变量, 如果要让多个线程共享访问, 那么这个变量可以使用关键字volatile进行声明; 而如果一个变量不想被多个线程共享访问, 那么就应该使用TLS。


下面这个是一个最简单的例子!

#include  
#include  

//使用TLS 的宏
#pragma comment(linker, "/INCLUDE:__tls_used")
//TLS的回调函数
void NTAPI my_tls_callback(PVOID h, DWORD reason, PVOID pv)  
{ 
	if( reason == DLL_PROCESS_ATTACH ){
		MessageBox(NULL,"hi,this is tls callback","title",MB_OK); 
	} 
	return; 
}
//定义一个TLS段
#pragma data_seg(".CRT$XLB")
extern "C" PIMAGE_TLS_CALLBACK my_tls_callbacktbl[] = {my_tls_callback,0};
#pragma data_seg() 

int main(void) 
{ 
	MessageBox(NULL,"为了证明,在我之前,TLS已经运行!","title",MB_OK); 
	return 0; 
}


简单总结:在程序入口函数运行之前运行!所以,它可以用来做很多事情,所以你懂的!

 

 源码下载:http://download.csdn.net/detail/u012607841/6795699

你可能感兴趣的:(C/C++)