HarmonyOS_多线程

并发是指在同一时间段内,能够处理多个任务的能力。为了提升应用的响应速度与帧率,以及防止耗时任务对主线程的干扰,HarmonyOS系统提供了异步并发和多线程并发两种处理策略。

  • 异步并发是指异步代码在执行到一定程度后会被暂停,以便在未来某个时间点继续执行,这种情况下,同一时间只有一段代码在执行。

  • 多线程并发允许在同一时间段内同时执行多段代码。在主线程继续响应用户操作和更新UI的同时,后台也能执行耗时操作,从而避免应用出现卡顿。

 

taskpool:对于一些耗时操作,使用Promise占用了主线程资源,所以出现了taskPool来保证可以起子线程处理耗时操作。

TaskPool支持开发者在主线程封装任务抛给任务队列,系统选择合适的工作线程,进行任务的分发及执行,再将结果返回给主线程。接口直观易用,支持任务的执行、取消,以及指定优先级的能力,同时通过系统统一线程管理,结合动态调度及负载均衡算法,可以节约系统资源。

场景:

  1. 当有大量的短期、独立且相对较小的任务需要执行时,例如批量处理数据、发送大量的异步请求等。
  2. 任务的创建和执行频率较高,通过任务池可以更有效地管理任务的创建、分配和回收,避免频繁的资源创建和销毁。
class TestA {
  execute() {
    taskpool.execute(calc, "123sss").then((result) => {
      const target = result as number
    })
  }
}

@Sendable
function calc(value: string): number {
  return 123
}

Worker:主要作用是为应用程序提供一个多线程的运行环境,可满足应用程序在执行过程中与主线程分离,在后台线程中运行一个脚本操作耗时操作,极大避免类似于计算密集型或高延迟的任务阻塞主线程的运行

场景:

  1. 对于需要长时间运行、资源消耗较大的任务,例如复杂的计算、持续的文件处理等,可以使用专门的 Worker 来执行,以避免阻塞主线程。
  2. 在分布式系统中,不同的节点可以作为 Worker 来分担整个系统的工作负载,提高系统的处理能力和响应速度
posted @ 2024-06-18 18:08  木木的奇奇  阅读(7)  评论(0编辑  收藏  举报