3

使用 dedicated 关键字声明线程局部变量有什么区别:

_Thread_local int var;

并使用特定tss_的功能集:

tss_t key;
tss_create(&key, free);
tss_set(key, malloc(sizeof(int)));
int* pVar = tss_get(key);

据我了解,_Thread_local关键字声明了一个具有线程存储持续时间的变量,而tss_函数集则将一个键返回给调用线程。然后可以使用此键访问一些可以根据需要分配的全局堆内存,并且该指针将仅对该线程可用,对吗?

4

1 回答 1

2

在功能上,重要的区别在于析构函数的建立。在您的示例中,这是free,但实际上它可以是具有正确签名的任何函数。

因此,这为在任何线程结束时进行回调以进行任何类型的清理提供了可能性。

于 2019-09-24T20:40:45.757 回答