WorkerNavigator: hardwareConcurrency 属性

Baseline 已广泛支持

此特性已经十分成熟,可在许多设备和浏览器版本上使用。自 2022 年 3 月起,它已在各浏览器中可用。

注意:此功能仅在 Web Workers 中可用。

navigator.hardwareConcurrency 只读属性返回用户计算机上可用于运行线程的逻辑处理器数量。

一个 Number,指示逻辑处理器核心的数量。

现代计算机的 CPU 通常有多个物理处理器核心(通常是两个或四个核心),但每个物理核心通常也能通过先进的调度技术一次运行多个线程。例如,一个四核 CPU 可能提供八个逻辑处理器核心。逻辑处理器核心的数量可以用来衡量一次可以有效地运行多少个线程,而无需它们进行上下文切换。

但是,浏览器可能会选择报告较少的逻辑核心数,以便更准确地表示可以同时运行的 Worker 的数量,因此不要将此视为用户系统核心数量的绝对测量值。

示例

在此示例中,为浏览器报告的每个逻辑处理器创建一个 Worker,并创建一个记录,其中包含对新 worker 的引用以及一个布尔值,指示我们是否已使用该 worker;这些对象依次存储在一个数组中以供以后使用。这创建了一个 worker 池,我们可以用它来处理后续的请求。

以下代码可以在 worker 中运行

js
let workerList = [];

for (let i = 0; i < navigator.hardwareConcurrency; i++) {
  let newWorker = {
    worker: new Worker("cpu-worker.js"),
    inUse: false,
  };
  workerList.push(newWorker);
}

规范

规范
HTML
# dom-navigator-hardwareconcurrency-dev

浏览器兼容性

另见