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

  • 相关阅读:
    揭秘富人的22种习惯与风格
    CSS
    浏览器--编辑器
    3 位运算 , 补码 ----在开发中比较少用
    2 Java数据类型+转义字符
    1 概述
    如何使用大脑
    JDBC
    web.xml文件的作用
    WindowBuilder插件探索
  • 原文地址:https://www.cnblogs.com/ahfuzhang/p/11623863.html
Copyright © 2011-2022 走看看