使用专用关键字声明线程局部变量有什么区别:
_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_
组函数将键返回给调用线程。然后可以使用该密钥访问一些可以根据需要分配的全局堆内存,并且该指针将仅对该线程可用,对吗?
答案 0 :(得分:2)
在功能上,重要的区别是析构函数的建立。在您的示例中,这是free
,但实际上它可以是具有正确签名的任何函数。
因此,这提供了在任何线程结束时进行任何清理的回调的可能性。