gpt4 book ai didi

c++ - 同时覆盖具有相同值的变量安全吗?

转载 作者:太空狗 更新时间:2023-10-29 19:44:53 24 4
gpt4 key购买 nike

我有以下情况(代码缺陷导致):

有一个原始类型的共享变量(假设为int),它在程序启动期间从严格的一个线程初始化为值N(假设为 0)。然后(严格来说,在变量初始化之后)在程序运行期间启动各种线程,它们以某种随机顺序读取该变量或用完全相同的值N(本例中为 0)。访问变量没有同步。

这种情况会导致程序出现意外行为吗?

最佳答案

根据标准,这是极不可能的,但并非不可能。

没有说明整数的底层表示是什么,标准也没有指定如何加载值。

我可以设想一个实现,无论多么奇怪,其中 0 的底层位模式是 10101010 并且该体系结构仅支持通过八个周期的移位将数据加载到内存中,但将其作为一个周期内的单个单元。

如果另一个线程在移入位模式时读取该值(例如,000000010000001000000101 等等) ,你会遇到问题。

任何人设计出这种奇异架构的可能性几乎为零,可以忽略不计。但是,不幸的是,它不是零。我想表达的是,在标准合规性方面,您根本不应该依赖假设。

并且,在您投票否决我之前,请随意引用标准中声明这是不可能的部分:-)

关于c++ - 同时覆盖具有相同值的变量安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3503008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com