gpt4 book ai didi

c++ - 如何声明和使用 "one writer, many readers, one process, simple type"变量?

转载 作者:IT老高 更新时间:2023-10-28 22:28:22 25 4
gpt4 key购买 nike

我有一个非常简单的问题。我有简单的类型变量(如 int)。我有一个进程,一个写入线程,几个“只读”线程。我应该如何声明变量?

  • volatile int
  • std::atomic<int>
  • int

我希望当“编写器”线程修改值时,所有“读取器”线程都应该尽快看到新值。

同时读取和写入变量是可以的,但我希望读取器获得旧值或新值,而不是一些“中间”值。

我正在使用单 CPU Xeon E5 v3 机器。我不需要便携,我只在这个服务器上运行代码,我用 -march=native -mtune=native 编译.性能非常重要,所以除非绝对需要,否则我不想添加“同步开销”。


如果我只使用 int一个线程写入值是否有可能在另一个线程中我暂时看不到“新鲜”值?

最佳答案

只需使用 std::atomic

不要使用volatile,也不要按原样使用;这没有提供必要的同步。在一个线程中修改它并在不同步的情况下从另一个线程访问它会产生未定义的行为。

关于c++ - 如何声明和使用 "one writer, many readers, one process, simple type"变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23368274/

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