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

鸿蒙开发:【线程模型】

线程模型

线程类型

Stage模型下的线程主要有如下三类:

  • 主线程

    • 执行UI绘制。
    • 管理主线程的ArkTS引擎实例,使多个UIAbility组件能够运行在其之上。
    • 管理其他线程的ArkTS引擎实例,例如使用TaskPool(任务池)创建任务或取消任务、启动和终止Worker线程。
    • 分发交互事件。
    • 处理应用代码的回调,包括事件处理和生命周期管理。
    • 接收TaskPool以及Worker线程发送的消息。
  • [TaskPool Worker线程]

    • 用于执行耗时操作,支持设置调度优先级、负载均衡等功能,推荐使用。
  • [Worker线程]

    • 用于执行耗时操作,支持线程间通信。 TaskPool与Worker的运作机制、通信手段和使用方法可以参考[TaskPool和Worker的对比]。 thread-model-stage

说明:

  • TaskPool自行管理线程数量,其生命周期由TaskPool统一管理。Worker线程最多创建8个,其生命周期由开发者自行维护。
  • 同一线程中存在多个组件,例如UIAbility组件和UI组件都存在于主线程中。在Stage模型中目前主要使用[EventHub]进行数据通信。
  • 执行hdc shell命令,进入设备的shell命令行。在shell命令行中,执行ps -p <pid> -T命令,可以查看指定应用进程的线程信息。其中,<pid>为需要指定的应用进程的[进程ID]。

使用EventHub进行线程内通信

[EventHub]提供了线程内发送和处理事件的能力,包括对事件订阅、取消订阅、触发事件等。以UIAbility组件与UI之间的数据同步为例,具体使用方法可以参考[UIAbility组件与UI的数据同步]。

相关文章:

  • 测试bert_base不同并行方式下的推理性能
  • STM32--DMA
  • Comfyui容器化部署与简介
  • mysql log_bin
  • Next.js 加载页面及流式渲染(Streaming)
  • 小公司要求真高
  • 247 H指数
  • DolphinScheduler 3.x 执行insert into SQL任务显示成功,但查不到数据
  • 网络仿真方法综述
  • 优质短视频素材下载网站有哪些?分享优质短视频素材下载资源
  • Git:从配置到合并冲突
  • 无人机遥感在农林信息提取中的实现方法与GIS融合应用
  • 基于实验的电动汽车动力电池SOC
  • 双非本科一年20w,已是人中龙凤了
  • 【问题解决】adb remount 失败或刷机无法连接设备(KaiOS)
  • php的引用
  • 【技术性】Search知识
  • 10个确保微服务与容器安全的最佳实践
  • 230. Kth Smallest Element in a BST
  • 4. 路由到控制器 - Laravel从零开始教程
  • Facebook AccountKit 接入的坑点
  • go语言学习初探(一)
  • java8-模拟hadoop
  • Java教程_软件开发基础
  • js写一个简单的选项卡
  • k个最大的数及变种小结
  • laravel with 查询列表限制条数
  • Node + FFmpeg 实现Canvas动画导出视频
  • Object.assign方法不能实现深复制
  • react 代码优化(一) ——事件处理
  • vue2.0项目引入element-ui
  • Yeoman_Bower_Grunt
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 高度不固定时垂直居中
  • 关于extract.autodesk.io的一些说明
  • 力扣(LeetCode)21
  • 通过git安装npm私有模块
  • const的用法,特别是用在函数前面与后面的区别
  • gunicorn工作原理
  • 进程与线程(三)——进程/线程间通信
  • #ifdef 的技巧用法
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (13)DroneCAN 适配器节点(一)
  • (C++20) consteval立即函数
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (三)模仿学习-Action数据的模仿
  • (四)Linux Shell编程——输入输出重定向
  • (五)网络优化与超参数选择--九五小庞
  • (转)甲方乙方——赵民谈找工作
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .bashrc在哪里,alias妙用
  • .net MySql
  • .NET 分布式技术比较