开源 Arkts 鸿蒙应用 开发(十四)线程--任务池(taskpool)

鸿蒙开发语言全景解析:从ArkTS到C++/Rust,如何选择与实战 在移动应用与万物互联开发领域,编程语言的选择直接影响着开发效率、应用性能与系统安全。其核心原理在于,不同的技术栈针对特定的应用场景和性能需求进行了优化设计。从技术价值角度看,现代开发框架通过分层架构,将声明式UI、状态管理等高级抽象与底层系统能力解耦,从而在提升开发体验的同时保障了运行时的性能与稳定性。这一设计在跨平台应用、高性能系统服务以及需要极致安全可靠的关键模块等场景中尤为重要。具体到鸿蒙(HarmonyOS)开发,其语言生态正是这一理念的集中体现:应用层主推基于TypeScript的ArkTS以提升 阅读详情

 文章的目的为了记录使用Arkts 进行Harmony app 开发学习的经历。本职为嵌入式软件开发,公司安排开发app,临时学习,完成app的开发。开发流程和要点有些记忆模糊,赶紧记录,防止忘记。

 

 相关链接:

开源 Arkts 鸿蒙应用 开发(一)工程文件分析-优快云博客

开源 Arkts 鸿蒙应用 开发(二)封装库.har制作和应用-优快云博客

开源 Arkts 鸿蒙应用 开发(三)Arkts的介绍-优快云博客

开源 Arkts 鸿蒙应用 开发(四)布局和常用控件-优快云博客

开源 Arkts 鸿蒙应用 开发(五)控件组成和复杂控件-优快云博客

开源 Arkts 鸿蒙应用 开发(六)数据持久--文件和首选项存储-优快云博客

开源 Arkts 鸿蒙应用 开发(七)数据持久--sqlite关系数据库-优快云博客

开源 Arkts 鸿蒙应用 开发(八)多媒体--相册和相机-优快云博客

开源 Arkts 鸿蒙应用 开发(九)通讯--tcp客户端-优快云博客

开源 Arkts 鸿蒙应用 开发(十)通讯--Http-优快云博客

开源 Arkts 鸿蒙应用 开发(十一)证书和包名修改-优快云博客

开源 Arkts 鸿蒙应用 开发(十二)传感器的使用-优快云博客

开源 Arkts 鸿蒙应用 开发(十三)音频--MP3播放_arkts avplayer播放音频 mp3-优快云博客

开源 Arkts 鸿蒙应用 开发(十四)线程--任务池(taskpool)-优快云博客

开源 Arkts 鸿蒙应用 开发(十五)自定义绘图控件--仪表盘-优快云博客

开源 Arkts 鸿蒙应用 开发(十六)自定义绘图控件--波形图-优快云博客

开源 Arkts 鸿蒙应用 开发(十七)通讯--http多文件下载-优快云博客

开源 Arkts 鸿蒙应用 开发(十八)通讯--Ble低功耗蓝牙服务器-优快云博客

 推荐链接:

开源 java android app 开发(一)开发环境的搭建-优快云博客

开源 java android app 开发(二)工程文件结构-优快云博客

开源 java android app 开发(三)GUI界面布局和常用组件-优快云博客

开源 java android app 开发(四)GUI界面重要组件-优快云博客

开源 java android app 开发(五)文件和数据库存储-优快云博客

开源 java android app 开发(六)多媒体使用-优快云博客

开源 java android app 开发(七)通讯之Tcp和Http-优快云博客

开源 java android app 开发(八)通讯之Mqtt和Ble-优快云博客

开源 java android app 开发(九)后台之线程和服务-优快云博客

开源 java android app 开发(十)广播机制-优快云博客

开源 java android app 开发(十一)调试、发布-优快云博客

开源 java android app 开发(十二)封库.aar-优快云博客

推荐链接:

开源C# .net mvc 开发(一)WEB搭建_c#部署web程序-优快云博客

开源 C# .net mvc 开发(二)网站快速搭建_c#网站开发-优快云博客

开源 C# .net mvc 开发(三)WEB内外网访问(VS发布、IIS配置网站、花生壳外网穿刺访问)_c# mvc 域名下不可訪問內網,內網下可以訪問域名-优快云博客

开源 C# .net mvc 开发(四)工程结构、页面提交以及显示_c#工程结构-优快云博客

开源 C# .net mvc 开发(五)常用代码快速开发_c# mvc开发-优快云博客

本章内容主要演示了如何使用任务池(taskpool)执行并发任务,以及如何在任务之间通过事件发射器(emitter)进行通信。

1.TaskPool简介

2.源码解析

3.所有源码

4.延时效果

一、TaskPool简介

TaskPool为应用程序提供多线程环境,降低资源消耗并提高系统性能。无需管理线程生命周期。

1.1  运作机制示意图

1.2  TaskPool注意事项

实现任务的函数需要使用@Concurrent装饰器标注

@Concurrent
function printArrayBuffer(buffer: ArrayBuffer) {
  return buffer;
}

二、源码解析

主要演示了如何使用任务池(taskpool)执行并发任务,以及如何在任务之间通过事件发射器(emitter)进行通信。

2.1  实现@Concurrent方法

// 3. 并发任务函数(仅使用局部变量和参数)
@Concurrent
function task1Function(iterations: number): void {
  // 使用局部变量存储中间结果
  let step: number;
  let calcResult: number;
  let progress: number;
  let result = 0;
  // 1. 首先将复杂计算函数定义为模块级函数


  for (step = 1; step <= iterations; step++) {
    // 调用模块级函数进行计算
    //calcResult = performComplexCalculation(step);

    for (let i = 0; i < 100000; i++) {
      result += Math.sin(step) * Math.cos(i);
    }

    progress = (step / iterations) * 100;

    emitter.emit("progress_update", {
      data: {
        step,
        totalSteps: iterations,
        result: result,
        progress
      } as ProgressData
    });
  }
}

2.2  taskpool创建和运行

  // 按钮2 - 启动任务2和任务3
  async myClick2() {
    if (this.task2Running || this.task3Running) return;

    this.task2Running = true;
    this.task3Running = true;
    this.message = "启动任务2和任务3";

    this.task2 = new taskpool.Task(task2Function);
    this.task3 = new taskpool.Task(task3Function);

    await taskpool.execute(this.task2);
    await taskpool.execute(this.task3);

    console.info("任务2和任务3已启动");
  }

2.3  使用Emitter进行线程间通信

Emitter用于同一进程内相同线程或不同线程间的事件处理,事件异步执行。使用时需要先订阅一个事件,然后发布该事件,发布完成后Emitter会将已发布的事件分发给订阅者,订阅者就会执行该事件订阅时设置的回调方法。当不需要订阅该事件时应及时取消订阅释放Emitter资源。

任务3订阅消息

@Concurrent
function task3Function(): void {
  console.info("任务3正在运行,等待接收消息");
  emitter.on("task2_to_task3", (data) => {
    console.info("任务3收到消息: " + JSON.stringify(data));
  });
}

按钮3发送消息

  // 按钮3 - 从任务2向任务3发送消息
  myClick3() {
    if (!this.task2Running || !this.task3Running) {
      this.message = "请先启动任务2和任务3";
      return;
    }

    emitter.emit("task2_to_task3", {
      data: {
        message: "这是来自任务2的消息",
        timestamp: new Date().getTime()
      }
    });
    this.message1 = "已从任务2向任务3发送消息";
  }

任务1每次进行复杂运算后,将进度条的值通过Emitter发送给主线程

@Concurrent
function task1Function(iterations: number): void {
  // 使用局部变量存储中间结果
  let step: number;
  let calcResult: number;
  let progress: number;
  let result = 0;
  // 1. 首先将复杂计算函数定义为模块级函数


  for (step = 1; step <= iterations; step++) {
    // 调用模块级函数进行计算
    //calcResult = performComplexCalculation(step);

    for (let i = 0; i < 100000; i++) {
      result += Math.sin(step) * Math.cos(i);
    }

    progress = (step / iterations) * 100;

    emitter.emit("progress_update", {
      data: {
        step,
        totalSteps: iterations,
        result: result,
        progress
      } as ProgressData
    });
  }
}

三、所有代码,不要权限配置,只有一个文件Index.ets

3.1  主要功能模块
1) 并发任务执行 (complexCalculationTask)
这是一个计算密集型任务,模拟复杂计算过程

使用@Concurrent装饰器标记,表示可以在任务池中并发执行

计算过程中通过emitter.emit()发送进度更新事件

包含嵌套循环计算正弦和余弦值并累加结果

2.)任务间通信 (task2Function 和 task3Function)
两个简单的并发任务,演示任务间通信

任务3监听"task2_to_task3"事件

任务2通过按钮触发向任务3发送消息

3) UI组件 (Index组件)
显示计算进度和结果

3.2  源码Index.ets



// index.ets
import taskpool from '@ohos.taskpool';
import { BusinessError } from '@ohos.base';
import emitter from '@ohos.events.emitter';


interface ProgressEvent {
  data: ProgressData;
}
// 2. 定义进度数据类型
interface ProgressData {
  step: number;
  totalSteps: number;
  result: number;
  progress: number;
}

// 3. 并发任务函数(仅使用局部变量和参数)
@Concurrent
function task1Function(iterations: number): void {
  // 使用局部变量存储中间结果
  let step: number;
  let calcResult: number;
  let progress: number;
  let result = 0;
  // 1. 首先将复杂计算函数定义为模块级函数


  for (step = 1; step <= iterations; step++) {
    // 调用模块级函数进行计算
    //calcResult = performComplexCalculation(step);

    for (let i = 0; i < 100000; i++) {
      result += Math.sin(step) * Math.cos(i);
    }

    progress = (step / iterations) * 100;

    emitter.emit("progress_update", {
      data: {
        step,
        totalSteps: iterations,
        result: result,
        progress
      } as ProgressData
    });
  }
}


@Concurrent
function task2Function(): void {
  console.info("任务2正在运行");
  // 任务2将在按下按钮3时向任务3发送消息
}

@Concurrent
function task3Function(): void {
  console.info("任务3正在运行,等待接收消息");
  emitter.on("task2_to_task3", (data) => {
    console.info("任务3收到消息: " + JSON.stringify(data));
  });
}

@Entry
@Component
struct Index {
  @State message: string = "准备执行复杂计算";
  @State message1: string = "准备执行复杂计算";

  @State progress: number = 0;
  @State currentStep: number = 0;
  @State results: number[] = [];
  private taskRunning: boolean = false;

  private task2Running: boolean = false;
  private task3Running: boolean = false;

  private task2: taskpool.Task | null = null;
  private task3: taskpool.Task | null = null;

  aboutToDisappear() {
    emitter.off("progress_update");
  }

  async task1() {
    if (this.taskRunning) return;

    this.taskRunning = true;
    this.resetState();

    emitter.on("progress_update", (eventData: ProgressEvent) => {
      this.updateProgress(eventData.data);
    });

    try {
      const task = new taskpool.Task(task1Function, 10);
      await taskpool.execute(task);
      this.message = "计算完成!";
    } catch (error) {
      this.handleError(error as BusinessError);
    } finally {
      this.cleanup();
    }
  }

  private resetState(): void {
    this.message = "计算进行中...";
    this.progress = 0;
    this.currentStep = 0;
    this.results = [];
  }

  private updateProgress(data: ProgressData): void {
    this.currentStep = data.step;
    this.progress = data.progress;
    this.results = [...this.results, data.result];
    this.message = `计算进度: ${this.currentStep}/20`;
  }

  private handleError(error: BusinessError): void {
    this.message = `计算错误: ${error.message}`;
    console.error("Task failed:", error);
  }

  private cleanup(): void {
    this.taskRunning = false;
    emitter.off("progress_update");
  }

  // 按钮2 - 启动任务2和任务3
  async myClick2() {
    if (this.task2Running || this.task3Running) return;

    this.task2Running = true;
    this.task3Running = true;
    this.message = "启动任务2和任务3";

    this.task2 = new taskpool.Task(task2Function);
    this.task3 = new taskpool.Task(task3Function);

    await taskpool.execute(this.task2);
    await taskpool.execute(this.task3);

    console.info("任务2和任务3已启动");
  }

  // 按钮3 - 从任务2向任务3发送消息
  myClick3() {
    if (!this.task2Running || !this.task3Running) {
      this.message = "请先启动任务2和任务3";
      return;
    }

    emitter.emit("task2_to_task3", {
      data: {
        message: "这是来自任务2的消息",
        timestamp: new Date().getTime()
      }
    });
    this.message1 = "已从任务2向任务3发送消息";
  }

  build() {
    Column() {
      Text(this.message)
        .fontSize(20)
        .margin(10);

      Progress({
        value: this.progress,
        total: 100,
        style: ProgressStyle.Linear
      })
        .width('90%')
        .height(30)
        .margin(10);

      this.buildResultDisplay()

      Column() {
        Text(this.message1)
          .fontSize(20)
          .margin(10);
        Button('启动任务2 - 创建任务2和任务3')
          .width('80%')
          .height(60)
          .margin(10)
          .onClick(() => this.myClick2());

        Button('启动任务3 - 发送数据')
          .width('80%')
          .height(60)
          .margin(10)
          .onClick(() => this.myClick3());
      }
    }
    .width('100%')
    .height('100%')
    .padding(10)
  }

  @Builder
  buildResultDisplay() {
    Column() {
      Text(`当前步骤: ${this.currentStep}/20`)
        .fontSize(16)
        .margin(5);

      Text(`最新结果: ${this.results[this.results.length - 1]?.toFixed(4) || '无'}`)
        .fontSize(16)
        .margin(5);

      Button('开始复杂计算')
        .width('80%')
        .height(60)
        .margin(10)
        .onClick(() => this.task1());


    }
  }
}

四、演示效果

手机效果图片

任务2、3启动打印和任务3收到事件后的打印

鸿蒙应用开发实战:分布式软总线、ArkTS并发与调试上架全解析 鸿蒙(HarmonyOS)是面向多设备协同的分布式操作系统,其底层采用微内核与分布式软总线技术,将手机、平板、电脑等设备的能力抽象为服务。开发者在ArkTS语言环境下,借助TaskPool与Worker并发模型处理耗时任务,通过DevEco Studio完成工程构建。基于hdc、hilog、hitrace等工具链,可高效定位崩溃与性能瓶颈,并结合签名与审核流程完成应用上架。本文从系统架构出发,覆盖最小工程搭建、真机调试、性能分析到发布灰度的完整链路,为鸿蒙应用迁移与面试备考提供工程实践参考。 阅读详情

相关推荐

ArcGIS Pro MCP 开源:自然语言驱动的 AI 制图与分析

人工智能与大模型的快速发展,正推动专业软件从“手动操作”走向“自然语言控制”。模型上下文协议(MCP)作为连接 AI 与外部工具的标准接口,类似为 AI 安装的“USB 接口”,让大模型可以通过统一协议调用 GIS 软件能力。基于 ArcPy 构建的 ArcGIS Pro MCP 项目,将复杂的地图制图与空间分析封装为 112 个可被 AI 调用的工具,使文本指令直接驱动软件完成数据加载、符号化、出图乃至叠加统计等任务。对 GIS 工程师、数据分析师与测绘规划从业者而言,该开源项目显著降低专业软件使用门槛,

weixin_29054195的博客 276

鸿蒙「TaskPool|Worker」多线程并发使用详解,这一篇足够!

CPU密集型任务,说白了是计算型耗时任务; I/O密集型任务,说白了是读写型耗时任务; 官方文档重点介绍了这两种基于多线程并发机制处理任务类型,我们是要深度思考下的?!「很有意义」,是否已经包含且指明了我们使用「TaskPool/Worker」来解决项目问题的方案呢? 对Worker以及TaskPool的使用详解,个人准备以一种特别的角度来详述。从我个人初始接触及学习研究的视角,针对 `如何选用`、`如何创建`、`如何使用`、`注意事项`和`条件限制` 多个方面,全面剖析。

文化园 4702

【亲测可用!】阿里达摩院开源实时数字人对话VideoChat本地部署教程(8G显存可跑)

本文主要记录在部署阿里达摩院开源实时数字人对话VideoChat时遇到的问题,希望对各位技术开发或爱好者有所帮助!

波点兔的博客 3897

ArkTS 方舟编程语言之启动线程池

任务池(taskpool)作用是为应用程序提供一个多线程的运行环境,降低整体资源的消耗、提高系统的整体性能,且您无需关心线程实例的生命周期。您可以使用任务池API创建后台任务(Task),并对所创建的任务进行如任务执行、任务取消的操作。理论上您可以使用任务池API创建数量不受限制的任务,但是出于内存因素不建议您这样做。此外,不建议您在任务中执行阻塞操作,特别是无限期阻塞操作,长时间的阻塞操作占据工作线程,可能会阻塞其他任务调度,影响您的应用性能。

wscqqlucy的专栏 703

Cesium生态盘点:超图、火星3D等15个二次开发框架对比

本文深入解析Cesium生态中的15个二次开发框架,包括超图、火星3D等主流选择,帮助开发者根据项目需求进行精准选型。从性能表现、功能完备性、开发友好度等维度进行对比,特别适合需要处理地理空间数据和构建三维可视化的JavaScript开发者。

weixin_28197941的博客 497

YOLO11实战 第056期-基于yolo11的无人机航拍铁路障碍物检测实战-数据集&源码&系统

召回率曲线帮助评估模型在目标检测任务中,检测到真正目标的能力。通过这条曲线,可以评估模型在目标检测任务中的整体性能,并找到合适的置信度阈值,以在精确率和召回率之间做出最佳平衡。PR曲线越接近右上角,模型性能越好,曲线下方的面积越大,说明模型在不同置信度下的。这条曲线显示了随着置信度的增加,每个类别的召回率先变化较小,然后在某个点之后迅速下降。通过这条曲线,可以选择合适的置信度阈值,以优化模型的检测结果,平衡精确率和召回率。曲线都显示了随着召回率的增加,精确度略有下降的趋势,但整体上精确度保持在很高的水平。

深度学习算法工程师,专注于前沿算法研究与实战应用。在这里,我将分享深度学习领域的实战经验、优质数据集资源以及最新论文解读与精度分析,旨在与广大技术爱好者共同探索人工智能的奥秘,助力技术成长与创新。 159

鸿蒙开发实践案例分析——多线程之TaskPool

如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。鸿蒙应用开发与鸿蒙系统开发哪个更有前景?嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~对于大前端开发来说,转鸿蒙开发究竟是福还是祸?鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?记录一场鸿蒙开发岗位面试经历~持续更新中……

2501_91726491的博客 803

昇腾NPU实战:PaddleSpeech语音模型高效部署与性能优化指南

本文详细介绍了如何在华为昇腾NPU上高效部署PaddleSpeech语音识别模型。通过使用官方Docker镜像、解决依赖冲突、修改源码适配NPU算子,并应用混合精度与批处理等优化技巧,实现模型在昇腾平台上的稳定运行与性能提升,为AI语音应用提供高性价比的国产硬件部署方案。

weixin_29214691的博客 181

鸿蒙ArkTS实战开发:TaskPool和Worker的对比 (TaskPool和Worker)_taskdispatcher和taskpool区别

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了。

2401_84160087的博客 759

主题033:燃烧反应工程

燃烧反应工程(Combustion Reaction Engineering)是研究燃料与氧化剂发生剧烈氧化反应的科学,涉及化学反应动力学、流体力学、传热传质等多个学科。燃烧是人类利用能源的主要方式,广泛应用于发电、交通运输、工业加热等领域。燃烧反应通常通过自由基链式反应进行。链引发:RH+O2⟶R⋅+HO2⋅ RH + O_2 \longrightarrow R^\cdot + HO_2^\cdot RH+O2​⟶R⋅+HO2⋅​链传递:R⋅+O2⟶RO2⋅ R^\cdot + O_2 \longrigh

kkchenjj的博客 231

C# 上位机程序中的数据采集与存储技术:从采集到持久化的完整解决方案

本文系统讲解C#上位机程序如何实现设备数据采集与持久化。主要内容包括:1)多种数据采集方式(串口通信、Modbus、OPC等)及代码示例;2)详细对比不同存储技术(CSV、SQLite、关系型数据库等)的优缺点;3)提供SQLite等存储实现代码;4)推荐分层系统架构(采集-缓存-存储-可视化);5)性能优化建议(多线程采集、异步存储、批量写入等)。文章强调应根据项目需求选择合适的技术方案,构建高效稳定的数据采集存储闭环系统。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1025

鸿蒙ArkTS实战开发:I O密集型任务(TaskPool),2024年最新美团三面和二面岗位不一样

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了。

2401_84181193的博客 793

基于STM32设计的指纹考勤机_348

随着信息化管理需求的日益增长,传统的人工考勤方式已难以满足现代社会对高效、精准和安全的考勤管理要求。为解决这一问题,本项目设计并实现了一款基于STM32的指纹考勤机系统。该系统采用AS608指纹识别模块进行人员身份识别,ESP8266无线模块实现与上位机APP的通信,支持人员信息录入、考勤时间段设置、考勤记录保存与查询等功能。系统通过SQLite数据库存储考勤数据,并提供导出EXCEL表格功能,方便数据管理与统计分析。该系统具有高效的考勤管理能力和良好的用户交互体验,能够广泛应用于企业、学校等机构的考勤管理

525

HarmonyOS应用开发实战:猫猫大作战-TaskPool 的基本使用

本文介绍了HarmonyOS中TaskPool多线程并发功能的基本使用方法。TaskPool适合执行CPU密集型任务,通过@Concurrent装饰器和taskpool.execute()方法可在独立线程中运行函数,避免阻塞主线程。文章演示了计算游戏得分的示例代码,并列出使用限制:仅支持序列化参数、可序列化返回值、不能捕获外部变量等。最后总结了TaskPool的核心要点,并预告下篇将讲解Worker长任务线程。TaskPool是实现HarmonyOS多线程计算的重要工具,能有效提升应用性能。

zzd1234566的博客 251

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

HarmonyOS实战开发:线程模型

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

2401_84194030的博客 1130

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

鸿蒙ArkTS实战开发:I O密集型任务(TaskPool)

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了。

2501_90404161的博客 1009

网络安全最新鸿蒙ArkTS实战开发:多线程安全注意事项_ts 多线程安全(3)

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了。

2401_84266286的博客 711

2024年网安最全鸿蒙ArkTS实战开发:多线程安全注意事项_ts 多线程安全(1)(1)

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了。

2401_84969340的博客 1012

鸿蒙ArkTS实战开发:同步任务 (TaskPool和Worker),2024年最新阿里巴巴HarmonyOS鸿蒙面试都问些什么问题

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了。

2401_84160087的博客 1259

鸿蒙ArkTS实战开发:同步任务 (TaskPool和Worker)

import Handle from ‘./handle’ // 返回句柄。// Worker线程的onmessage逻辑。// 向Worker子线程发送Set消息。// 向Worker子线程发送Get消息。// 无法传输的句柄,所有操作依赖此句柄。// 接收Worker子线程的错误信息。// 根据实际业务,选择时机以销毁线程。// 接收Worker子线程的结果。// MyWorker.ts代码。// handle.ts代码。

2401_84160325的博客 587

鸿蒙ArkTS实战开发:TaskPool和Worker的对比 (TaskPool和Worker)_taskdispatcher和taskpool区别(1)

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了。

2401_84181193的博客 745

鸿蒙ArkTS实战开发:CPU密集型任务 (TaskPool和Worker)

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了。

2401_84160087的博客 942

HarmonyOS应用开发实战:猫猫大作战-TaskGroup 的使用

本文介绍了ArkTS中TaskGroup的用法,这是一种批量管理并发任务的工具,适用于并行计算场景。通过TaskGroup可以将多个任务一次性执行并聚合结果,提高计算效率。文章以"猫猫大作战"的并行合并计算为例,演示了TaskGroup的基本使用方法,包括创建任务组、添加任务和批量执行。关键点包括:使用new taskpool.TaskGroup()创建组,通过group.addTask(task)添加任务,最后用taskpool.execute(group)批量执行获取结果数组。文章还比较了TaskPoo

zzd1234566的博客 350

开源鸿蒙跨平台应用开发实战:网络请求与列表渲染

跨平台应用开发是现代移动开发的重要趋势,通过统一的技术栈实现多端部署能显著提升开发效率。开源鸿蒙(OpenHarmony)的ArkUI框架采用声明式开发范式,配合ArkTS语言的静态类型检查,为开发者提供了高效的开发体验。在网络通信领域,HTTP请求作为数据交互的基础手段,其稳定性和性能直接影响用户体验。本文以axios网络库的鸿蒙适配为例,详解如何实现包含拦截器、错误处理等企业级特性的请求封装。在UI渲染层面,通过LazyForEach优化长列表性能,结合@State/@Prop数据绑定机制,构建高流畅度

weixin_29758911的博客 108

如何利用 HarmonyOS 的异步编程模型(如 Future 和 Callback)优化 CPU 计算

鸿蒙应用里,UI 的渲染和事件处理都在主线程上。如果在主线程里做重计算、大数组处理、复杂解析,就会把这一帧的时间占满,界面卡顿、点击没反应。要提升响应速度,就得把耗 CPU 的活放到别处算,算完再把结果拿回主线程更新界面——这离不开异步编程:用 Future、Promise 或 Callback 表示「稍后才有结果」的操作,主线程只负责发起任务和收到结果后的轻量处理,不堵在计算上。

记录从移动端、鸿蒙到物联网与AI的完整实战与思考。专注于分享可复用的工程方案与产品思维,尤其深入鸿蒙生态与全栈开发。以十年工程与管理沉淀,为你提供清晰的技术纵深路径。坚信技术的价值在于“贯通”与“落地”。 1万+
上一篇: 开源 Arkts 鸿蒙应用 开发(十三)音频--MP3播放
下一篇: 开源 Arkts 鸿蒙应用 开发(十五)自定义绘图控件--仪表盘
ajassi2000
博客等级 码龄22年 2035粉丝 191原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值