当前位置: 首页 > news >正文

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

相关文章:

  • ArkUI-X与Android桥接通信之方法回调
  • ArkUI-X与Android桥接通信之消息通信
  • 在Unity中Update和Fixedupdate有什么区别
  • PHP中如何定义常量以及常量和变量的主要区别
  • 【Pikachu】PHP反序列化RCE实战
  • 讲述我的plc自学之路 第十三章
  • Unity VR/MR开发-开发环境准备
  • 大数据学习(133)-Hive数据分析2
  • 行为设计模式之Iterator(迭代器)
  • ​**​CID字体​**​ 和 ​**​Simple字体​**​
  • 新手如何选择前端框架?
  • 行为型设计模式之Mediator(中介者)
  • 【Redis】持久化
  • 苍穹外卖-day01
  • 告别 @MockBean!在 Spring Boot 3.2+ 中使用 @MockitoBean 进行单元测试
  • NLP学习路线图(三十三): 文本分类
  • redis--黑马点评--分布式锁实现详解
  • uni-app学习笔记二十七--设置底部菜单TabBar的样式
  • AWS 公开数据集下载与操作说明
  • iOS 抖音导航栏首页一键分两列功能的实现
  • 顺的做网站便宜吗/网站首页制作网站
  • 网站流量统计实现/微信上如何投放广告
  • 人和做网站/无经验能做sem专员
  • 做企业网站用什么cms/近期发生的重大新闻
  • 六安招聘网/seo案例分析及解析
  • 中山响应式网站建设/兰州seo推广