如何使用taskpool实现多线程

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

HarmonyOS
2024-05-26 17:51:07
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
落月无痕

核心代码

1. 模拟耗时任务

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

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; 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
分享
微博
QQ
微信
回复
2024-05-27 22:39:08
相关问题
如何实现多线程数据共享
3071浏览 • 1回复 待解决
HarmonyOS多线程使用
758浏览 • 0回复 待解决
如何在鸿蒙系统中实现多线程操作?
1517浏览 • 1回复 待解决
HarmonyOS 关于多线程并发的使用
831浏览 • 1回复 待解决
ArkTs多线程方案如何保证线程安全
3513浏览 • 2回复 待解决
HarmonyOS 关于taskpool怎么实现线程同步
1118浏览 • 1回复 待解决
TaskPool线程内存如何共享
2864浏览 • 1回复 待解决
TaskPool线程和主线程如何通信
3224浏览 • 1回复 待解决
多线程中EGL如何共享Context
1379浏览 • 1回复 待解决
HarmonyOS 多线程写法限制
807浏览 • 1回复 待解决
HarmonyOS 多线程锁问题
1300浏览 • 1回复 待解决
HarmonyOS是否支持多线程
719浏览 • 0回复 待解决
Worker多线程使用,有谁知道啊?
1816浏览 • 1回复 待解决