3
GCC 4.8中C ++ 11 thread_local变量的性能损失是多少?
从GCC 4.8变更日志草案中: G ++现在实现了C ++ 11 thread_local关键字;这与GNU__thread关键字的主要区别在于它允许动态初始化和销毁语义。不幸的是,此支持要求引用非函数局部thread_local变量,即使它们不需要动态初始化也需要运行时惩罚 ,因此用户可能希望继续使用__thread具有静态初始化语义的TLS变量。 这种运行时惩罚的本质和来源到底是什么? 显然,要支持非函数局部thread_local变量,在进入每个线程主线程之前都需要一个线程初始化阶段(就像全局变量有一个静态初始化阶段一样),但是它们是否指的是超出此范围的运行时代价? ? 粗略地说,gcc的thread_local新实现的体系结构是什么?