如何使用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; 
}

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
相关问题
如何实现多线程数据共享
2206浏览 • 1回复 待解决
HarmonyOS多线程使用
170浏览 • 0回复 待解决
ArkTs多线程方案如何保证线程安全
2559浏览 • 2回复 待解决
如何在鸿蒙系统中实现多线程操作?
216浏览 • 1回复 待解决
多线程中EGL如何共享Context
387浏览 • 1回复 待解决
TaskPool线程内存如何共享
2106浏览 • 1回复 待解决
TaskPool线程和主线程如何通信
2319浏览 • 1回复 待解决
HarmonyOS 多线程写法限制
131浏览 • 1回复 待解决
HarmonyOS 多线程并发相关问题
237浏览 • 1回复 待解决
TaskPool如何跟主线程进行通信
540浏览 • 1回复 待解决
HarmonyOS 数据库多线程操作
167浏览 • 1回复 待解决
Worker多线程使用,有谁知道啊?
981浏览 • 1回复 待解决
HarmonyOS 多线程锁问题
456浏览 • 1回复 待解决
HarmonyOS是否支持多线程
119浏览 • 0回复 待解决