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
相关推荐
2501_915909067 小时前
iOS应用签名的三种方法全解析:从官方到第三方工具
android·ios·小程序·https·uni-app·iphone·webview
饭小猿人1 天前
Android 腾讯X5WebView如何禁止系统自带剪切板和自定义剪切板视图
android·java
_李小白1 天前
【android opencv学习笔记】Day 8: remap(像素位置重映射)
android·opencv·学习
美狐美颜SDK开放平台1 天前
多场景美颜SDK解决方案:直播APP(iOS/安卓)开发接入详解
android·人工智能·ios·音视频·美颜sdk·第三方美颜sdk·短视频美颜sdk
嗷o嗷o1 天前
Android BLE 里,MTU、分包和长数据发送到底该怎么处理
android
Gary Studio1 天前
Android AIDL HAL工程结构示例
android
y = xⁿ1 天前
MySQL八股知识合集
android·mysql·adb
andr_gale1 天前
04_rc文件语法规则
android·framework·aosp
祖国的好青年1 天前
VS Code 搭建 React Native 开发环境(Windows 实战指南)
android·windows·react native·react.js