首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >线程本地存储

线程本地存储
EN

Stack Overflow用户
提问于 2010-06-26 20:56:24
回答 2查看 995关注 0票数 3

当你在一个插槽中为线程A分配一些TLS时,你能从线程B访问相同的插槽吗?

它是内部同步的吗?或者它是如何工作的?

EN

回答 2

Stack Overflow用户

发布于 2010-06-26 20:58:05

不,线程本地存储的全部要点是它对线程是本地的-如果您访问不同线程中的相同插槽,您将获得该线程的值,而不是另一个线程的值。

如果您需要在线程之间共享状态,请不要使用线程本地存储。

票数 4
EN

Stack Overflow用户

发布于 2010-06-26 21:10:15

这个术语可能会令人困惑,因为“槽”通常是内存位置或单个位置的比喻。在TLS中,插槽仅仅是线程私有存储中某个位置的一个“名称”。在x86/x84上没有真正的线程本地存储-所有的内存都是全局的-所以系统会根据正在访问它的线程将TLS中的每个“插槽”映射到不同的实际内存位置。同一线程对插槽的请求会导致相同的内存位置-不同线程对同一插槽的访问会导致不同的内存位置。

这样就不需要同步了,因为每个线程看到的是不同的数据。当然,除非你选择在两个不同线程的TLS中存储相同的对象,那就是另一回事了,但那是人为的--共享并不是因为TLS。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3123939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档