当前位置: 首页 > 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
http://www.dtcms.com/a/237961.html

相关文章:

  • 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 抖音导航栏首页一键分两列功能的实现
  • 【iOS】多线程NSOperation,NSOperationQueue
  • 从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(十二)
  • 【iOS】 Block再学习
  • Ubuntu20.04中 Redis 的安装和配置
  • Cursor 编辑器, 使用技巧,简单记录一下
  • 【人工智能 | 项目开发】Python Flask实现本地AI大模型可视化界面
  • 2025年与2030年AI及AI智能体 (Agent) 市场份额分析报告
  • 【GO性能优化】第十五章:性能优化艺术——揭秘Go程序的性能调优技巧
  • CppCon 2015 学习:Live Lock-Free or Deadlock
  • MS39531N 是一款正弦驱动的三相无感直流电机驱动器,具有最小振动和高效率的特点