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

android关于native中Thread类的使用

文章目录

  • 简要概述
  • 代码记录

简要概述

简单记录android中native关于thread的使用
源码位置:

system\core\libutils\include\utils\Thread.h
system\core\libutils\Threads.cppclass Thread : virtual public RefBase
Thread继承RefBase,有以下的一些特性
// Invoked after creation of initial strong pointer/reference.
virtual void            onFirstRef();

代码记录

main.cpp

#include <utils/Log.h>
#include <pthread.h>
#include "TestThread.h"
#ifdef LOG_TAG
#undef LOG_TAG
#endif
#define LOG_TAG "hello_test"
using namespace android;int main(int args,char** argv) {ALOGD("main start TestThread");// TestThreadsp<TestThread> testThread = new TestThread;testThread->run("TestThread", PRIORITY_URGENT_DISPLAY);while(1){if(!testThread->isRunning()){break;}}ALOGD("main end");return 0;
}

Android.bp

cc_binary{name:"hello_test",srcs:["main.cpp","TestThread.cpp",],shared_libs:["liblog","libutils",],cflags: ["-Wno-error","-Wno-unused-parameter",],
}

TestThread.h

//
// Created by xxx on 25-6-8.
//#ifndef ANDROID_TESTTHREAD_H
#define ANDROID_TESTTHREAD_H
#include <utils/threads.h>
#include <utils/Log.h>namespace android {class TestThread : public Thread {public:TestThread();virtual void        onFirstRef();virtual status_t    readyToRun();virtual bool        threadLoop();virtual void        requestExit();private:int cnt = 0;};
}
#endif //ANDROID_TESTTHREAD_H

TestThread.cpp

//
// Created by xxx on 25-6-8.
//
#include "TestThread.h"
namespace android{TestThread::TestThread():Thread(false) {ALOGD("TestThread");}void TestThread::onFirstRef(){ALOGD("onFirstRef");}status_t  TestThread::readyToRun(){ALOGD("readyToRun");return OK;}bool TestThread::threadLoop() {cnt++;ALOGD("threadLoop cnt = %d",cnt);if(cnt >= 20){return false;}return true;}void  TestThread::requestExit(){ALOGD("requestExit");}}

日志打印如下所示

06-14 22:29:28.500  2094  2094 D hello_test: main start TestThread
06-14 22:29:28.500  2094  2094 D hello_test: TestThread
06-14 22:29:28.500  2094  2094 D hello_test: onFirstRef
06-14 22:29:28.501  2094  2096 D hello_test: readyToRun
06-14 22:29:28.502  2094  2096 D hello_test: threadLoop cnt = 1
...
06-14 22:29:28.505  2094  2096 D hello_test: threadLoop cnt = 20
06-14 22:29:28.505  2094  2094 D hello_test: main end

函数执行顺序 TestThread->onFirstRef->readyToRun->threadLoop

http://www.xdnf.cn/news/1033039.html

相关文章:

  • Linux 系统目录结构概述-linux024
  • Tauri(2.5.1)+Leptos(0.8.2)开发自用桌面小程序
  • 系统设计基本功:理解语义
  • 【Linux】Linux多路复用-epoll
  • MapReduce技术详解
  • 软件工程的相关名词解释
  • 【力扣 简单 C】141. 环形链表
  • Spring Data JPA全面指南
  • Docker 在尝试连接 Docker Hub 时遇到网络问题(超时)
  • 在Docker上部署datalust/Seq日志服务系统
  • 【DSP笔记 · 第5章】数字滤波器的蓝图:从数学公式到硬件实现的艺术
  • React--》使用vite构建器打造高效的React组件库
  • Docker 基础使用
  • TryHackMe (THM) - SOC基础知识
  • Android音视频流媒体基础总结
  • excel中添加进度条
  • 从大模型到 AI 应用,一共需要几步?
  • Git 工作流与版本管理策略
  • JVM(1)——运行时数据区
  • Hive SQL 执行计划详解:从查看方法到优化应用
  • 学习昇腾开发的第一天--环境配置
  • RabbitMQ的交换机和队列概念
  • 精益数据分析(104/126):免费移动应用的用户活跃率与付费转化优化策略
  • STM32F4通用定时器TIM9-TIM14讲解及PWM呼吸灯实例解读
  • 1 Studying《Arm A715 Software Optimization Guide》
  • 【Python-Day 26】解锁时间魔法:深入解析 time 与 datetime 模块
  • 双重特征c++
  • 共享项目中使用Wpf和Winform——c# CAD二次开发
  • 浏览器指纹-探究前端如何识别用户设备
  • 2.4.1 ASPICE的编码与单元测试