2013-03-31 57 views
1

在阅读下面链接的Niklas Frykholm的非常好的博客文章时,我遇到了一些我无法完全理解的东西。线程本地指针初始化

http://bitsquid.blogspot.nl/2012/01/sensible-error-handling-part-1.html

此代码混淆我:

__THREAD Array<const char *> *_error_context_name; 
__THREAD Array<const char *> *_error_context_data; 

的代码定义一个线程局部指针字符串数组被用作简单的堆叠。我不太明白的是如何以跨平台的方式初始化和销毁​​阵列?此外如何与DLL的边界工作?

回答

1

线程本地只有注释变量在程序中解析到的位置。您需要在使用前分配它,就像其他变量一样。

为了理智和表现,您最好在线程启动时执行此操作。

+0

如果我在一个dll和应用程序都包含的头文件中声明了这一点,那么指针在dll中正确解析了吗?如同,它们是否会指向与主应用程序相同的位置? –