Moin Steffem,
Nun meine Frage, die ich mit Google so einfach nicht beantworten konnte. Ist es sinnvoll, mehrer web worker gleichzeitig zu erstellen und die Arbeit zur Berechnung darauf zu verteilen, oder sollte ich nur einen web worker mit der Berechnung laufen lassen?
Das ist so nicht zu beantworten, da wichtige Informationen fehlen:
- Ist die Berechnung I/O-intensiv, macht sie also z. B. viele HTTP-Requests?
- Ist die Berechnung einfach verteilbar auf mehrere Threads? Oder ist dafür viel Verwaltungs-Overhead nötig?
Ist eine Berechnung sehr I/O-intensiv oder einfach verteilbar, lohnt es sich auf jeden Fall Cores + 1 Thread zu erstellen. Benötigst du viel Verwaltungsaufwand zur Koordination der Threads, lohnt es sich eher nicht.
Bedenke aber: „Workers (as these background scripts are called herein) are relatively heavy-weight, and are not intended to be used in large numbers.“ (aus der Spec).
Werden mit jedem web worker auch jeweils eigene threads gestartet oder ist das auch abhängig von der jeweiligen Hardware (Multicore CPU etc.) bzw. Browser-Implementierung?
Die Spec schreibt vor, dass ein „separate parallel execution environment“ erstellt wird, was das bedeutet überlässt sie aber dem Browser-Hersteller. Es könnte ein Thread sein oder aber auch ein neuer Prozess.
Ich würde gerne mehr darüber erfahren, bevor ich etwas implementiere, was nur auf der Hälfte der Hardware, oder der Browser mit web worker Unterstützung funktioniert.
LG,
CK