首页 > 其他分享 >TaskPool 和 Worker 的对比

TaskPool 和 Worker 的对比

时间:2024-04-01 20:45:08浏览次数:17  
标签:TaskPool Worker 支持 任务 线程 序列化 对比

作用

  • TaskPool(任务池)和 Worker 都为应用程序提供多线程运行环境,用于处理耗时的计算任务或其他密集型任务,避免阻塞主线程,提高系统性能。
 

实现特点对比

  • 内存模型:TaskPool 和 Worker 都提供线程间隔离,内存不共享。
  • 参数传递机制:两者都采用结构化克隆算法进行序列化、反序列化,完成参数传递,并支持 ArrayBuffer 转移和 SharedArrayBuffer 共享。
  • 参数传递:TaskPool 直接传递参数,无需封装,默认进行 transfer;Worker 需要自己封装消息对象作为唯一参数。
  • 方法调用:TaskPool 直接将方法传入调用;Worker 在线程中进行消息解析并调用对应方法。
  • 返回值:TaskPool 异步调用后默认返回;Worker 主动发送消息,需在 onmessage 解析赋值。
  • 生命周期:TaskPool 自行管理生命周期;开发者自行管理 Worker 的数量及生命周期。
  • 任务池个数上限:TaskPool 自动管理,无需配置;同个进程下,Worker 最多支持同时开启 8 个线程。
  • 任务执行时长上限:两者均无限制。
  • 设置任务的优先级:两者都不支持。
  • 执行任务的取消:TaskPool 支持取消任务队列中等待的任务;Worker 不支持。
 

适用场景对比

  • TaskPool 适合独立任务维度,超长任务会被系统自动回收;Worker 适合长时间占据线程执行,需要主动管理线程生命周期的场景。
 

TaskPool 运作机制

  • 支持在主线程封装任务抛给任务队列,系统选择合适的工作线程进行任务分发及执行,并将结果返回给主线程。
 

Worker 运作机制

  • 创建 Worker 的线程称为宿主线程,Worker 子线程与宿主线程拥有独立的实例,通信基于消息传递。
 

注意事项

  • TaskPool 和 Worker 实现的任务函数需要使用装饰器标注,且入参需满足序列化支持的类型。
  • 实现任务的函数需要使用装饰器@Concurrent标注,且仅支持在.ets文件中使用。
  • Worker创建后需要手动管理生命周期,且最多同时运行的Worker子线程数量为8个。
  • Ability类型的Module支持使用Worker,Library类型的Module不支持使用Worker。
  • 创建Worker不支持使用其他Module的Worker.ts文件,即不支持跨模块调用Worker。
  • 由于不同线程中上下文对象是不同的,两者工作线程只能使用线程安全的库。
  • 序列化传输的数据量大小限制为 16MB。

标签:TaskPool,Worker,支持,任务,线程,序列化,对比
From: https://www.cnblogs.com/androidsuperman/p/18109333

相关文章

  • Windows、WSL 与 Linux 的性能对比
    Windows、WSL与Linux的性能对比芋道源码我的微信公众号:芋道源码。一起知其然,知其所以然。 105人赞同了该文章 Phoronix网站发布了关于Windows、WSL和Linux的性能基准测试结果。测试的内容包括网络性能、I/O性能、编程语言运行性能和图形......
  • 【4月首发】京东 阿里 腾讯云服务器价格对比表 低至50元/年 幻兽帕鲁 雾锁王国 我的世
    本文纯原创,侵权必究【云服务器推荐】价格对比!阿里云京东云腾讯云选购指南视频截图《最新对比表》已更新在文章头部—腾讯云文档,文章具有时效性,请以腾讯文档为准!【腾讯文档实时更新】2024年-幻兽帕鲁服务器专区最新云服务器对比表https://docs.qq.com/document/DV0RCS0l......
  • m基于OFDM系统的PAPR性能matlab仿真,对比LFDMA,IFDMA,DFDMA
    1.算法仿真效果matlab2022a仿真结果如下:   2.算法涉及理论知识概要       在正交频分复用(OrthogonalFrequencyDivisionMultiplexing,OFDM)系统中,信号的峰值功率相对于其平均功率的比例称为峰均功率比(Peak-to-AveragePowerRatio,PAPR)。由于多个子载波的叠......
  • .net和java串口通讯压力测试对比
    最近由于工作要求,需要对一个串口通讯设备进行压力测试,要求连续持续对串口设备发送指令,无间隔,测试设备是否会死机。要求做到毫秒级,测试第三方的工具,基本上都无法达到毫秒级,最少的也是10毫秒。于是就自己写代码测试。通过.net写,发现最少能达到1毫秒,但是有遗漏,看日志如下2024-03-3......
  • 工厂方法模式与抽象工厂模式的深度对比
    ​......
  • .Net 对象与对象之间的映射转换的6中方式以及性能对比
    我们在.Net开发的过程中,经常会遇到一个实体对象与另一个实体对象之间的映射转换,接下来我们将依次去实现6个对象间映射转换的方式,并对他们进行性能测试,找出其中效率最高的方式。通过对象Copy,通过new一个新的实体对象通过手动赋值的方式实现publicclassObjectCopyMapper{......
  • 线程池-2:runWorker分析-1
    为何runWorker中在task被当前worker中的当前线程获取到准备执行task时需要进行worker.lock()?如下图:1、某个worker中的run逻辑只会被worker中包装的线程进行执行;2、按理说:不会存在多个线程并发执行同一个worker中的runWorker()逻辑,那么为什么需要在当前线程已经获取到task......
  • js对比日期大小
    我们在日常开发过程中,经常会用到JavaScript语言在前端代码中,进行日期的选择,比如开始日期和结束日期的选择,同时我们希望用户在选择日期的时候不要选错日期,比如结束日期早于开始日期,那么从逻辑上数据肯定是错的,所以为了检测用户选择的日期是否正确,将会用到开始日期和结束日期的比......
  • Hybrid-PSC:基于对比学习的混合网络,解决长尾图片分类 | CVPR 2021
     论文提出新颖的混合网络用于解决长尾图片分类问题,该网络由用于图像特征学习的对比学习分支和用于分类器学习的交叉熵分支组成,在训练过程逐步将训练权重调整至分类器学习,达到更好的特征得出更好的分类器的思想。另外,为了节省内存消耗,论文提出原型有监督对比学习。从实验结果来看......
  • kube-proxy模式 iptables和ipvs对比
    kube-proxy的ipvs模式和iptables模式在Kubernetes集群中各有优劣,主要体现在性能、功能和支持的协议方面。1.性能:IPVS模式:由于IPVS是专门为负载均衡设计的,它在性能方面通常优于iptables。IPVS使用基于哈希的负载均衡算法,能够快速处理大量的并发连接,其连接处理的名义计算复杂度......