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
相关推荐
Jackilina_Stone8 小时前
【faiss】用于高效相似性搜索和聚类的C++库 | 源码详解与编译安装
android·linux·c++·编译·faiss
棒棒AIT9 小时前
mac 苹果电脑 Intel 芯片(Mac X86) 安卓虚拟机 Android模拟器 的救命稻草(下载安装指南)
android·游戏·macos·安卓·mac
fishwheel9 小时前
Android:Reverse 实战 part 2 番外 IDA python
android·python·安全
消失的旧时光-194312 小时前
Android网络框架封装 ---> Retrofit + OkHttp + 协程 + LiveData + 断点续传 + 多线程下载 + 进度框交互
android·网络·retrofit
zcychong12 小时前
Handler(二):Java层源码分析
android
Chef_Chen14 小时前
从0开始学习R语言--Day58--竞争风险模型
android·开发语言·kotlin
用户20187928316715 小时前
演员的智能衣橱系统之Selector选择器
android
CYRUS_STUDIO15 小时前
OLLVM 混淆 + VMP 壳照样破!绕过加壳 SDK 的核心检测逻辑
android·逆向·汇编语言
Kapaseker15 小时前
憋了一周了,12000字深入浅出Android的Context机制
android