加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

【小记录】arm64下的原子加

发布时间:2020-12-14 00:19:16 所属栏目:Linux 来源:网络整理
导读:1.代码中使用atomic_add aarch64下面并没有任何关于atomic的头文件 编译出现错误: /Users/ahfu/code/android/android-ndk-r14b/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ ....../..//thread_util.cpp:92:7: error: use of undeclared identifier

1.代码中使用atomic_add

  • aarch64下面并没有任何关于atomic的头文件
  • 编译出现错误:
/Users/ahfu/code/android/android-ndk-r14b/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ ....
../..//thread_util.cpp:92:7: error: use of undeclared identifier 'atomic_add'
      atomic_add(&(obj->m_start_idx),1);

2.怀疑是clang的问题,尝试换gcc编译

Application.mk 中加上一行:
NDK_TOOLCHAIN := aarch64-linux-android-4.9
编译出现:

/Users/ahfu/code/android/android-ndk-r14b/toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86_64/bin/aarch64-linux-android-g++  ...
../..//thread_util.cpp:92:40: error: 'atomic_add' was not declared in this scope
       atomic_add(&(obj->m_start_idx),1);

3. 最后想起来,atomic变成了gcc内置指令了

于是把 atomic_add更换为 __sync_fetch_and_add(&(obj->m_start_idx),1); 问题解决。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读