thread_local宏
概要:
#define thread_local _Thread_local
描述:
该宏会扩展为C语言关键词_Thread_local,表示线程存储期限。
具有块作用域对象的声明中,如果声明说明符包含_Thread_local,则声明说明符还应该包含static或者extern。如果在标识符的任一声明中出现了_Thread_local声明说明符,则该标识符的所有声明中都应该使用_Thread_local声明说明符。_Thread_local声明说明符不能用于函数声明。
使用_Thread_local声明说明符声明的对象具有线程存储期限。该对象的生存期是其线程的整个执行过程,并且其值在线程启动时初始化。不同线程中,相同标识符标识的是不同的对象;在表达式中使用标识符是指使用与评估表达式的线程相关联的对象。尝试从与对象关联的线程以外的线程访问具有线程存储期限的对象,结果将由实现定义。
范例:
|
|
输出:
Thread 1
Value of threadLocal: 5
Address of threadLocal: 00000272bdc43200
Thread 2
Value of threadLocal: 10
Address of threadLocal: 00000272bdc430d0
Thread 3
Value of threadLocal: 15
Address of threadLocal: 00000272bdc42be0
注:使用Pelles C编译。
相关内容:
tss_t | 保存线程专属存储指针标识符的完整对象类型。 |