openharmony 鸿蒙 taskpool-async-task-guide

2025-06-12 浏览 (1)

TaskPool指定任务并发度场景

此处提供使用TaskPool创建异步队列的开发指导,以相机预览流采集数据处理的功能为例。 由于处理过程是个频繁耗时任务,如果相机采集过快,就丢弃之前的采集数据,缓存最新的一帧数据处理。

  1. 导入需要用到的模块。

    // Index.ets
    import { taskpool } from '@kit.ArkTS';
    import { BusinessError, emitter } from '@kit.BasicServicesKit';
    
  2. 定义长时任务。

    // Index.ets
    @Concurrent
    function collectFrame() {
       // 采集数据,并且进行处理
       // 模拟处理过程,这里是个耗时任务
       let t = new Date().getTime()
       while (new Date().getTime() - t < 30000) {
         continue;
       }
    }
    
  3. 创建异步队列并执行采集任务。

    // Index.ets
    @Entry
    @Component
    struct Index {
      sensorTask?: taskpool.LongTask
    
      build() {
        Column() {
          Text("HELLO WORLD")
            .id('HelloWorld')
            .fontSize(50)
            .fontWeight(FontWeight.Bold)
            .onClick(() => {
              // 创建并发度为5的异步队列,等待队列个数为5。
              let asyncRunner:taskpool.AsyncRunner = new taskpool.AsyncRunner("async", 5, 5);
              // 每秒触发一次采集任务
              setTimeout(() => {
                let task:taskpool.Task = new taskpool.Task(collectFrame);
                 asyncRunner.execute(task);
               }, 1000);
            })
        }
        .height('100%')
        .width('100%')
      }
    }
    

你可能感兴趣的鸿蒙文章

harmony 鸿蒙ArkTS(方舟编程语言)

harmony 鸿蒙在build-profile.json5中配置arkOptions

harmony 鸿蒙异步锁

harmony 鸿蒙方舟字节码文件格式

harmony 鸿蒙方舟字节码函数命名规则

harmony 鸿蒙方舟字节码基本原理

harmony 鸿蒙方舟字节码概述

harmony 鸿蒙共享容器

harmony 鸿蒙异步等待

harmony 鸿蒙ArkTS跨语言交互

  • 所属分类: 后端技术
  • 本文标签: 软件 鸿蒙
  • 版权声明: 本文链接 https://seaxiang.com/blog/ecFIES