android关于pthread的使用过程
文章目录
- 简介
- 代码流程
- pthread使用
- hello_test.cpp
- Android.bp
- 编译过程报错处理
- 验证过程
简介
android开发经常需要使用pthread来编写代码实现相关的业务需求
代码流程
pthread使用
需要查询某个linux函数的方法使用,可以使用man + 函数名
// $ man pthread_create#include <pthread.h>int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);
// $ man pthread_detach#include <pthread.h>int pthread_detach(pthread_t thread);
hello_test.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
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
执行
/system/bin # ./hello_test
可以看到日志可以正常输出,打印如下所示
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