zoukankan      html  css  js  c++  java
  • 【小记录】arm64下的原子加

    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);
    问题解决。

  • 相关阅读:
    Rafy 框架
    巧用拦截器:高效的扩展点设计
    Rafy 框架
    Rafy 框架
    Rafy 框架
    Rafy 框架-发布网页版用户手册
    Rafy 领域实体框架
    基金投资方法札记
    股票、基金投资方案总结
    BaaS API 设计规范
  • 原文地址:https://www.cnblogs.com/ahfuzhang/p/11623863.html
Copyright © 2011-2022 走看看