---
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

发表评论 取消回复