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
相关推荐
游戏开发爱好者815 小时前
iOS 性能测试的工程化方法,构建从底层诊断到真机监控的多工具测试体系
android·ios·小程序·https·uni-app·iphone·webview
帅得不敢出门16 小时前
Android11~13 Framework实现Ntp服务器多域名轮询同步时间
android·服务器·python·framework·github
2501_9160088916 小时前
iOS App 混淆的真实世界指南,从构建到成品 IPA 的安全链路重塑
android·安全·ios·小程序·uni-app·cocoa·iphone
百锦再16 小时前
.NET到Java的终极迁移指南:最快转型路线图
android·java·开发语言·python·rust·go·.net
喵霓16 小时前
mac—android-platform-tools介绍
android·macos
zore_c17 小时前
【C语言】文件操作详解2(文件的顺序读写操作)
android·c语言·开发语言·数据结构·笔记·算法·缓存
2501_9151063217 小时前
iPhone 耗电异常全面诊断指南,构建多工具协同的电量分析与优化体系
android·ios·小程序·https·uni-app·iphone·webview
卿雪17 小时前
MySQL【SQL及其分类】:DDL、DML、DQL、DCL
android·sql·mysql
友友马17 小时前
『MySQL - 进阶』存储过程(上):核心概念、变量体系与流程控制
android·数据库·mysql