首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么atomic_is_lock_free在mac上不能正确链接?

为什么atomic_is_lock_free在mac上不能正确链接?
EN

Stack Overflow用户
提问于 2020-07-26 00:07:29
回答 1查看 99关注 0票数 0

我正在尝试在mac上运行this example

代码语言:javascript
复制
#include <iostream>
#include <utility>
#include <atomic>

struct A { int a[100]; };
struct B { int x, y; };
int main()
{
    std::atomic<A> a;
    std::atomic<B> b;
    std::cout << std::boolalpha
              << "std::atomic<A> is lock free? "
              << std::atomic_is_lock_free(&a) << '\n'
              << "std::atomic<B> is lock free? "
              << std::atomic_is_lock_free(&b) << '\n';
}

但是我得到了这个错误:

代码语言:javascript
复制
Undefined symbols for architecture x86_64:
  "___atomic_is_lock_free", referenced from:
      std::__1::__atomic_base<main::B, false>::is_lock_free() const volatile in lock_free_main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

this example也是如此。

我注意到,如果我将Struct A更改为只有一个或两个ints,它就会链接。当结果不为真时,看起来它不会链接,但为什么它不链接呢?在我看来像是个虫子。

我发现了一些更老的问题herehere,这让我认为bug现在应该已经解决了。

下面是我的编译器的版本:

代码语言:javascript
复制
 $> g++ --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple clang version 11.0.0 (clang-1100.0.33.17)
Target: x86_64-apple-darwin19.5.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
EN

回答 1

Stack Overflow用户

发布于 2020-08-08 03:15:27

请改用"is_always_lock_free“。

代码语言:javascript
复制
    std::cout << std::boolalpha
              << "std::atomic<A> is lock free? "
              << a.is_always_lock_free << '\n'
              << "std::atomic<B> is lock free? "
              << b.is_always_lock_free << '\n';

你可能需要另外定义"__cpp_lib_atomic_is_always_lock_free“,因为它还没有达到标准。

实际问题是,"atomic_is_lock_free“在编译时运行,至少对于Mac平台是这样。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63090529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档