如何使用taskpool实现多线程

原生TS、JS是基于事件循环机制的单线程语言,对于阻塞型耗时任务,如何通过原生接口实现多线程编程。

HarmonyOS
2024-05-26 17:51:07
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
bhtlilly

核心代码

1. 模拟耗时任务

// task 需要执行3s的小任务 当前@concurrent注解暂未同步至IDE检查 该报错不影响调试与执行 
@Concurrent 
async function minTask(index) { 
  // 等待三秒 
  await new Promise(resolve=>setTimeout(resolve,3000)) 
  return index; 
}

2. 执行耗时任务

async startTasks() { 
  // 小任务的promise数组 
  let generalTask = []; 
  this.endTime = '--:--:--.---'; 
  this.taskResult = ''; 
  this.startTime = timeToString(new Date()); 
 
  // 为10个小任务申请taskpool线程 
  for (let i = 0; i < this.taskNum; i++) { 
    generalTask.push(taskpool.execute(minTask, i)) 
  } 
 
  // 等待所有任务完成 
  let res = await Promise.all(generalTask); 
  this.endTime = timeToString(new Date()); 
 
  // 拼接任务返回的结果 
  this.taskResult = res.join('-'); 
  return res; 
}
分享
微博
QQ
微信
回复
2024-05-27 22:39:08
相关问题
如何实现多线程数据共享
742浏览 • 1回复 待解决
ArkTs多线程方案如何保证线程安全
976浏览 • 1回复 待解决
TaskPool线程内存如何共享
828浏览 • 1回复 待解决
TaskPool线程和主线程如何通信
884浏览 • 1回复 待解决
Worker多线程使用,有谁知道啊?
464浏览 • 1回复 待解决
求大佬告知ArkTS是否支持多线程
775浏览 • 1回复 待解决
配置管理类多线程方案
626浏览 • 1回复 待解决
系统多线程模型是什么样的
658浏览 • 1回复 待解决
线程执行延时如何实现
536浏览 • 1回复 待解决
Worker和TaskPool线程数量是否有限制
743浏览 • 1回复 待解决
woeker及taskpool的简单实现
316浏览 • 1回复 待解决
js Fa如何实现线程间通信?
4187浏览 • 1回复 待解决