HarmonyOS应用开发实战:猫猫大作战-task-group 任务组并发
·


前言
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
| 特性 | TaskGroup | Promise.all |
|---|---|---|
| 执行环境 | 后台线程 | UI 线程 |
| 并行度 | 线程池调度 | 同线程 |
| 阻塞 UI | 不阻塞 | 阻塞 |
| 适用场景 | CPU 密集型 | I/O 密集型 |
四、最佳实践
- CPU 密集用 TaskGroup:游戏引擎中的计算
- 数量控制:单组任务不超过 10 个
- 错误处理:
try-catch包裹 execute - 结果收集:返回值为数组,按添加顺序排列
总结
TaskGroup 管理一组后台并发任务,游戏结束时并行处理数据保存和上传。核心要点:new TaskGroup() 创建、 addTask 添加、 execute(group) 并行执行。
如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!
相关资源:
更多推荐


所有评论(0)