【发布时间】:2014-06-01 01:38:04
【问题描述】:
我想了解Thread-local storage (TLS) 类型的实现。在C++11 作为thread_local 关键字或C 作为__thread 关键字可用。这篇wikipedia 文章说:
有时希望两个线程引用同一个 静态或全局变量实际上是指不同的内存 位置,从而使变量 thread-local 成为规范的 示例是 C 错误代码变量
errno。
这用于将static 或global 变量设置为线程本地,以便其他线程无法访问它们。
我的问题是这些变量如何存储在内存中以使其成为线程的本地变量?
毕竟这些本质上是全局/静态变量,是什么阻止其他线程访问它们?它们是否保存在一些特殊的数据段中?
【问题讨论】:
标签: c linux multithreading memory c++11