android关于pthread的使用过程

文章目录

简介

android开发经常需要使用pthread来编写代码实现相关的业务需求

代码流程

pthread使用

需要查询某个linux函数的方法使用,可以使用man + 函数名

cpp 复制代码
// $ man pthread_create
  #include <pthread.h>
  int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
                          void *(*start_routine) (void *), void *arg);
cpp 复制代码
// $ man pthread_detach
   #include <pthread.h>
   int pthread_detach(pthread_t thread);

hello_test.cpp

cpp 复制代码
#include <utils/Log.h>
#include <pthread.h>
#ifdef LOG_TAG
#undef LOG_TAG
#endif
#define LOG_TAG "hello_test"

pthread_t thread_id;

void deal_data(){
    ALOGD("deal_data");
}

static void *start_thread_func (void *arg){
    ALOGD("start_thread_func");
    pthread_detach(thread_id);
    deal_data();
    return nullptr;
}

int main(int args,char** argv) {
    ALOGD("main");
    if(pthread_create(&thread_id,nullptr,start_thread_func,nullptr/**this**/) == 0){
       	 ALOGD("pthread_create success");
    }else{
       	 ALOGD("pthread_create failed");
    }
    sleep(5);
    ALOGD("main end");
    return 0;
}

Android.bp

bash 复制代码
cc_binary{
    name:"hello_test",
    srcs:[
        "hello_test.cpp",
    ],
    shared_libs:[
        "liblog",
        "libutils",
    ],

    cflags: [
            "-Wno-error",
            "-Wno-unused-parameter",
        ],
}

编译过程报错处理

cflags的配置

从编译报错可以看出是unused parameter 'xxx' -Werror,-Wunused-parameter,刚开始以为直接配置报错的参数就好了,发现没有用,下次编译还是报错。

百度一波,说明如下:

解决-Werror,-Wunused类似问题万能公式 将"-Wunused-parameter"形式修改为"-Wno-unused-parameter"形式。其关键是将"-W"修改为:-Wno-,后边保持不变即可。

即可编译成功。

验证过程

adb push hello_test /system/bin

执行

bash 复制代码
/system/bin # ./hello_test

可以看到日志可以正常输出,打印如下所示

bash 复制代码
06-08 15:40:20.727  1978  1978 D hello_test: main
06-08 15:40:20.728  1978  1978 D hello_test: pthread_create success
06-08 15:40:20.728  1978  1979 D hello_test: start_thread_func
06-08 15:40:20.728  1978  1979 D hello_test: deal_data
06-08 15:40:25.728  1978  1978 D hello_test: main end
相关推荐
北京自在科技8 小时前
谷歌 Find Hub 迎来新版本更新
android·安卓
古法安卓14 小时前
Android-休眠唤醒后onLocationChanged没有数据问题排查
android·java·android studio
Htr_16 小时前
Creem 2.0 使用指南:面向 AI 构建时代的资金平台
android·数据库·人工智能·ui·photoshop
wardenlzr18 小时前
车机看门狗(Watchdog)为何会让整机硬重启
android·优化·车机
IT毕设实战小研18 小时前
基于大数据的商场商铺数据分析与可视化的设计与实现
android·java·大数据·django·课程设计
aqi0019 小时前
一文读懂 HarmonyOS 7.0 带来的十大API重要升级
android·华为·harmonyos·鸿蒙·harmony
是店小二呀19 小时前
鸿蒙PC开源移植:CodeLite原生IDE与Remote Agent适配
android·智能手机·远程桌面
终端安全笔记20 小时前
iOS 27 给了租赁一个新工具,但它只认受监督的设备
android·网络·安全·ios
爱笑鱼21 小时前
Android 系统启动机制(八):系统服务怎样从创建走到可用?SystemServiceManager 和 Boot Phase 各管什么?
android