WorkerNavigator: hardwareConcurrency-Eigenschaft

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.

Hinweis: Diese Funktion ist nur in Web Workers verfügbar.

Die navigator.hardwareConcurrency-Eigenschaft ist eine schreibgeschützte Eigenschaft, die die Anzahl der logischen Prozessoren zurückgibt, die für das Ausführen von Threads auf dem Computer des Benutzers verfügbar sind.

Wert

Eine Number, die die Anzahl der logischen Prozessorkerne angibt.

Moderne Computer haben mehrere physische Prozessorkerne in ihrer CPU (üblicherweise zwei oder vier Kerne), aber jeder physische Kern kann normalerweise mehr als einen Thread gleichzeitig ausführen, indem er fortschrittliche Planungstechniken verwendet. Ein Vier-Kern-CPU könnte zum Beispiel acht logische Prozessorkerne bieten. Die Anzahl der logischen Prozessorkerne kann verwendet werden, um zu messen, wie viele Threads effektiv gleichzeitig ausgeführt werden können, ohne dass sie ihren Kontext wechseln müssen.

Der Browser kann jedoch entscheiden, eine niedrigere Anzahl logischer Kerne anzugeben, um genauer darzustellen, wie viele Workers tatsächlich gleichzeitig laufen können. Daher sollten Sie dies nicht als absolute Messung der Anzahl der Kerne im System des Benutzers ansehen.

Beispiele

In diesem Beispiel wird für jeden logischen Prozessor, den der Browser meldet, ein Worker erstellt und es wird ein Datensatz erstellt, der eine Referenz auf den neuen Worker sowie einen Boolean-Wert enthält, der angibt, ob wir diesen Worker bereits verwenden. Diese Objekte werden wiederum in einem Array gespeichert, das später verwendet wird. Dies erzeugt einen Pool von Workern, die wir später zur Bearbeitung von Anfragen nutzen können.

Der folgende Code kann in einem Worker ausgeführt werden:

js
let workerList = [];

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

Spezifikationen

Specification
HTML Standard
# dom-navigator-hardwareconcurrency-dev

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch