gpt4 book ai didi

C++,两个没有锁的编写线程

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:43:07 24 4
gpt4 key购买 nike

我有 3 个线程。

  • 线程 A 和线程 B 只是编写者。

  • thread C 是一个公正的读者。

  • 变量是 time_t。

我需要验证没有数据损坏。如果数据来自线程A或来自线程B,那么就OK。

但是,如果变量的结果是既不是来自线程 A 也不是来自线程 B 的数据,那么它就被破坏了

正如我所想,因为 time_t 可以在一个汇编操作中写入这样就没问题了。

是这样吗?

谢谢

最佳答案

如果您有两个潜在的并发写入(1) 到一个共享位置,但它们之间没有同步,那么您就有未定义的行为,任何事情都可能发生。所以这是个坏主意。

请注意,即使您无法根据您对底层架构的了解来想象糟糕的执行情况,优化器也可能会妨碍您,因为它可以假设 UB 不会发生。


(1) 请注意,即使没有同步的一个写入器和一个读取器也是完全相同的 UB。

关于C++,两个没有锁的编写线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48565001/

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