gpt4 book ai didi

c++ - std::atomic 无法编译

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

我需要 std::chrono::high_resolution_clock::time_point我想从一个线程写入并从另一个线程读取的字段。如果我声明它是我的代码编译没有任何错误。

但为了让我的字段在另一个线程中可见,我用 std::atomic 将其包围像这样 std::atomic<std::chrono::high_resolution_clock::time_point>现在我有以下编译错误:

/usr/include/c++/4.8/atomic:167:7: error: function ‘std::atomic<_Tp>::atomic() [with _Tp = std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1l, 1000000000l> > >]’ defaulted on its first declaration with an exception-specification that differs from the implicit declaration ‘constexpr std::atomic<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1l, 1000000000l> > > >::atomic()’
atomic() noexcept = default;

我应该如何申报std::chrono::high_resolution_clock::time_point我从一个线程写入并从另一个线程读取的字段(以确保“读取线程”看到最后一个值)?

最佳答案

您的选择:

  • 忘记让它成为原子并使用互斥锁来序列化访问

  • 选择某个整数时间单位(例如,自纪元以来的毫秒数)并即时转换为/从该时间单位转换,将整数值存储在您计算出的某种整数类型中具有足够的容量来覆盖日期范围你正在处理(也许是 std::atomic_ullong)

  • (删除了疯狂的建议)

关于c++ - std::atomic<std::chrono::high_resolution_clock::time_point> 无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29364456/

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