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 @   木木的奇奇  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示