---

title: "Navigator.hardwareConcurrency:线程池大小与并行策略"

keywords:

  • hardwareConcurrency
  • Worker 池
  • 并行分片
  • 负载均衡
  • 功耗

description: "说明 navigator.hardwareConcurrency 的含义与使用,在 Worker 池与并行分片中设定合理的并行度,权衡性能与功耗,并处理平台差异与回退。"

categories:

  • 文章资讯
  • 编程技术

---

概述

navigator.hardwareConcurrency 返回建议的并行度(逻辑处理器数量),可用于初始化 Worker 池与并行任务分配。需结合任务性质与设备功耗进行调整。

示例

const N = Math.max(1, Math.min(navigator.hardwareConcurrency || 4, 8))
const workers = Array.from({ length: N }, () => new Worker('/worker.js'))
// 简单分片分发
function parallelProcess(items) {
  const chunks = Array.from({ length: N }, () => [])
  items.forEach((it, i) => chunks[i % N].push(it))
  return Promise.all(chunks.map((chunk, i) => new Promise(res => {
    workers[i].onmessage = e => res(e.data)
    workers[i].postMessage({ chunk })
  })))
}

工程建议

  • 动态并行度:根据任务类型(CPU/IO)与设备性能调整;避免过度并行导致争用与功耗上升。
  • 池管理:复用 Worker 与任务队列;记录失败与超时重试。
  • 兼容:未暴露或返回异常值时回退到经验并行度;允许用户设置上限。

参考与验证

  • MDN navigator.hardwareConcurrency 文档:https://developer.mozilla.org/docs/Web/API/NavigatorConcurrentHardware/hardwareConcurrency

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部