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

瀏覽器相容性

另見