HarmonyOS应用开发实战:猫猫大作战-task-group 任务组并发
2026/7/29 14:34:03 网站建设 项目流程

前言

TaskGroup是 taskpool 中管理一组并发任务的机制。在「猫猫大作战」中,TaskGroup 用于并行计算得分排行榜批量保存数据等场景。

一、TaskGroup 基础

import { taskpool } from '@kit.ArkTS'; @Concurrent function computeScore(score: number, multiplier: number): number { return score * multiplier; } @Concurrent function saveData(data: string): boolean { console.info(`保存: ${data}`); return true; } async function runBatch(): Promise<void> { const group = new taskpool.TaskGroup(); // 添加任务 group.addTask(computeScore, 100, 2); group.addTask(computeScore, 200, 3); group.addTask(saveData, 'game_record_001'); // 并行执行 const results = await taskpool.execute(group); console.info(`结果: ${JSON.stringify(results)}`); }

二、分组并发

@Concurrent function uploadScore(score: number): boolean { // 模拟上传 return true; } @Concurrent function saveLocal(data: string): boolean { return true; } @Concurrent function logAnalytics(event: string): void { console.info(`统计: ${event}`); } // 游戏结束时多任务并行 async function onGameEnd(score: number): Promise<void> { const group = new taskpool.TaskGroup(); group.addTask(uploadScore, score); group.addTask(saveLocal, JSON.stringify({ score, time: Date.now() })); group.addTask(logAnalytics, 'game_end'); await taskpool.execute(group); }

三、TaskGroup vs Promise.all

特性TaskGroupPromise.all
执行环境后台线程UI 线程
并行度线程池调度同线程
阻塞 UI不阻塞阻塞
适用场景CPU 密集型I/O 密集型

四、最佳实践

  1. CPU 密集用 TaskGroup:游戏引擎中的计算
  2. 数量控制:单组任务不超过 10 个
  3. 错误处理try-catch包裹 execute
  4. 结果收集:返回值为数组,按添加顺序排列

总结

TaskGroup 管理一组后台并发任务,游戏结束时并行处理数据保存和上传。核心要点:new TaskGroup()创建、addTask添加、execute(group)并行执行

如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!


相关资源:

  • taskpool TaskGroup 文档
  • 第 144 篇:taskpool
  • 第 147 篇:taskpool-execute
  • 第 149 篇:ArrayBuffer

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询