Wenn ich mich nicht irre, suchen Sie nach etwas in der Art des Multithreading und/oder der Berechnung mehrerer Dinge gleichzeitig.
Mehrere Ausführungen auf einmal
SIMD beginnt seinen Weg in dem Browser zu finden, die mit Knoten-Implementierungen nicht weit dahinter. Werfen Sie einen Blick auf node-simd oder MDN SIMD (browsers). SIMD ist immer noch experimentell und funktioniert im Moment nur auf unterstützten CPUs (natürlich, da nicht alle CPUs diese Funktionalität haben). Er führt mehrere Dinge auf einmal, ein Beispiel normale JS Vergleich JS wäre zu SIMD:
// Normal addition, 4 actions are executed.
var a = [1, 2, 3, 4];
var b = [5, 6, 7, 8];
var c = [];
c[0] = a[0] + b[0];
c[1] = a[1] + b[1];
c[2] = a[2] + b[2];
c[3] = a[3] + b[3];
c; // Array[6, 8, 10, 12]
// SIMD execution - all additions are processed simultaenously through the CPU
var a = SIMD.Float32x4(1, 2, 3, 4);
var b = SIMD.Float32x4(5, 6, 7, 8);
var c = SIMD.Float32x4.add(a,b);
c; // Float32x4[6, 8, 10, 12]
Multithreading
In Bezug auf Multithreading, webworkers
haben jetzt für eine Weile in der Browser-Umgebung existiert. Dies wurde gemäß der HTML-Spezifikation, wie sie in this repository zu sehen ist, vollständig auf den Knoten portiert.
Hier ist ein good explanation, warum webworkers
wurden sogar auf Knoten an erster Stelle portiert, da Sie bereits untergeordnete Prozesse in anderen Threads und auf anderen CPUs mit dem child_process
-Modul ausführen können. node-webworker
ist ein großartiges Modul, da jeder Prozess innerhalb seines on-Kontexts und in seinem eigenen node
-Prozess ausgeführt wird, so dass Multithreading wirklich mit Knoten erfolgt.
Um verschiedene Prozesse auf unterschiedlichen CPUs auszuführen, verwenden Sie entweder node-webworker
oder verwenden Sie child_process
, um andere Threads zu spawnen, um gleichzeitig verschiedene Aktionen mit verschiedenen CPU-Kernen auszuführen. node-webworker
kann mit der bekannten API postMessage
auf Ereignisse warten, und child_process
kommuniziert über stdin/stdout/stderr
.
Hoffnung, dass Ihre Frage beantwortet :)
Ich hatte den Eindruck, dass es mindestens [eine Möglichkeit] (https://www.npmjs.com/package/webworker-threads) gab, mehrere Ausführungsabläufe zu erstellen, die gleichzeitig ausgeführt werden können, die kommunizieren, indem Nachrichten an übergeben gegenseitig. Ist das nicht so? –
@DavidSchwartz, nein, Sie sind richtig, dieser Ansatz könnte 'child_process' verwenden und die Nachrichtenübergabe mit dem 'child_process.on (' message ')' Ereignis im Elternprozess und der' process.send() 'Funktion im Kind implementieren verarbeiten. Ich wollte auch meine Antwort darauf beschränken, was Node.js als Teil seiner Kernfunktionalität bereitstellt und nicht, was Pakete potenziell bieten könnten. – peteb