首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“线程存储持续时间”和“线程本地存储持续时间”是同义词吗?

“线程存储持续时间”和“线程本地存储持续时间”是同义词吗?
EN

Stack Overflow用户
提问于 2022-04-21 15:05:51
回答 2查看 93关注 0票数 2

C11,6.2.4对象的存储时间,4(重点添加):

是一个对象,其标识符是用存储类说明符_Thread_local声明的,它具有线程存储持续时间

C11,7.5错误,2(重点添加):

errno,它扩展为具有int线程本地存储持续时间类型的可修改的lvalue 201)。

“线程存储持续时间”和“线程本地存储持续时间”是同义词吗?

额外注意:目前,_Thread_local的支持独立于__STDC_NO_THREADS__,而(可能)是expected to be dependent

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-27 16:17:13

是“线程存储持续时间”和“线程本地存储持续时间”的同义词吗?

这是我看到的唯一可信的解释,是的。规范第6.2.4/1段中关于存储持续时间的定义不包括“线程本地存储持续时间”:

有四个存储期限:静态的、线程的、自动的和分配的。

但是,线程存储持续时间是使用_Thread_local存储类说明符声明的标识符的存储持续时间,在一般讨论中,将与此类标识符关联的对象描述为“线程本地”是相当常见的。我认为7.5节中“线程本地存储持续时间”的出现--这是规范中该术语的唯一外观--构成了编辑错误,但我不认为它的意图是可疑的。这一点因规范中的评论而得到加强。

程序启动时初始线程中errno的值为零(其他线程中errno的初始值是一个不定值)。

(C11 7.5/3)。

errno在不同线程中可能有不同的值,只能用两种方式来解释:

  1. errno有线程存储持续时间,或
  2. --这是errno的一个特殊而独特的特性,它是通过其他方式提供的,而不是具有线程存储持续时间。

从总体上看,我觉得解释(2)是不可信的。

票数 1
EN

Stack Overflow用户

发布于 2022-04-21 20:42:02

是。他们是一回事。

C11库文件errno.h的规范告诉您,errno的行为应该像声明的那样:

代码语言:javascript
复制
_Thread_local int errno;

存储持续时间规范告诉您_Thread_local的含义。

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

https://stackoverflow.com/questions/71956731

复制
相关文章

相似问题

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