navigator.hardwareConcurrency

註: この機能は Web Workers 内で利用可能です。

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

構文

logicalProcessors = window.navigator.hardwareConcurrency

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

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

しかしながら、ブラウザはより少ない論理コア数を報告することを選択することで、一度に実行できるWorkerの数をより正確に表すことがあります。したがって、この数値をユーザーのシステムのコア数の絶対的な測定値として扱わないようにしてください。

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

let workerList = [];

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

仕様

Specification Status Comment
HTML Living Standard
navigator.hardwareConcurrency の定義
現行の標準 Initial definition.

ブラウザでの実装状況

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
hardwareConcurrencyChrome 完全対応 37Edge 完全対応 15Firefox 完全対応 48IE ? Opera 完全対応 24Safari ? WebView Android 完全対応 37Chrome Android 完全対応 37Firefox Android 完全対応 48Opera Android 完全対応 24Safari iOS ? Samsung Internet Android 完全対応 あり

凡例

完全対応  
完全対応
実装状況不明  
実装状況不明

関連情報