"thread local storage" 和 "thread specific storage" 之间的区别

Difference between "thread local storage" and "thread specific storage"

使用 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_ 函数集 return 是调用线程的键。然后可以使用此密钥访问一些可以根据需要分配的全局堆内存,并且该指针将仅可用于该线程,对吗?

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

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