gpt4 book ai didi

c++ - std::atomic_thread_fence 具有 undefined reference

转载 作者:行者123 更新时间:2023-11-30 04:18:26 25 4
gpt4 key购买 nike

在 Ubuntu 12.04 系统上,当我尝试编译以下代码时:

#include <atomic>
int a;
int main()
{
a = 0;
std::atomic_thread_fence(std::memory_order_acquire);
a = 1;
}

我收到如下错误消息:

g++ test.cpp -std=c++0x 
/tmp/ccayKntC.o: In function `main': test.cpp:(.text+0x14): undefined reference to `std::atomic_thread_fence(std::memory_order)' collect2: ld returned 1 exit status

clang++ 编译时也会发生这种情况。由于这是一个链接器错误,我猜我的 libstdc++ 版本缺少必要的功能。但是,其他原子操作似乎有效。

我使用的是 Ubuntu 12.04。我想知道我的系统设置是否有问题,它是否是我的 libstdc++ 中缺少的功能,或者可能是其他问题。理想情况下,我希望能够解决问题。

最佳答案

这实际上是一个在 4.7 分支中修复的错误:

我认为你需要使用 __sync_synchronize或类似 __asm__ __volatile__ ( "mfence"::::"memory")

有些人喜欢对which synchronization operation非常严谨他们需要,但我认为对于常见情况,始终使用 mfence 就足够了。

关于c++ - std::atomic_thread_fence 具有 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16429669/

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