WorkerNavigator.hardwareConcurrency

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.

navigator.hardwareConcurrency は読み取り専用のプロパティで、ユーザーのコンピューターでスレッドを実行するために利用できる論理プロセッサーの数を返します。

論理プロセッサーコアの数を示す数値です。

現代のコンピューターは、 CPU に複数の物理プロセッサーコア(2 つまたは 4 つのコアが一般的)がありますが、それぞれの物理コアは、高度なスケジューリング技術を使って一度に複数のスレッドを実行することもできるのが普通です。そのため、 4 つのコアを持つ CPU は、例えば 8 つの論理プロセッサーコアを提供することができます。論理プロセッサーコアの数は、コンテキストスイッチを持つことなく一度に効果的に実行できるスレッドの数を測定するために使用することができます。

しかし、ブラウザーは、一度に実行できるワーカー (Worker) の数をより正確に表すために、論理コアの数を少なくして報告することを選ぶかもしれません。

この例では、ブラウザーから報告された論理プロセッサーごとに Worker が一つ作成され、新しいワーカーへの参照と、 そのワーカーをまだ使っているかどうかを示す論理値を含むレコードが作成されます。 これらのオブジェクトは順に、後で使うために配列に格納されます。このようにして、後でリクエストを処理するために使用されるワーカーのプールが作成されます。

以下のコードはワーカーで実行することができます。

js
let workerList = [];

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

仕様書

Specification
HTML
# dom-navigator-hardwareconcurrency-dev

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
hardwareConcurrency

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
See implementation notes.
Has more compatibility info.

関連情報