Meine Herren!
Die meisten Operationen in JavaScript fallen in diese Kategorien:
- Interaktion mit dem DOM; Layouting und Painting
- Input/Output (hauptsächlich Festplatte und Netzwerk)
- Mathematische Berechnungen, Datentransformationen
- und 2. laufen möglicherweise non blocking, bleiben aber afaik in einem Thread.
Jein, Browser verwalten viele eigene Threads/Prozesse (1,2), die teilweise auch aufeinander warten müssen. Die Zuordnung was asynchron und was synchron abläuft bzw. was sich gegenseitig blockt und was parallel ausgeführt werden kann zu echten Threads/Prozessen kann nicht so trivial vorgenommen werden. Beispielsweise muss der Parser stets darauf warten, bis von der Netzwerk-Schicht neue Daten geliefert werden. Trotzdem werden die beiden Aufgaben von Browser in separaten Threads bearbeitet (3).
Quellen:
-
http://www.chromium.org/developers/design-documents/multi-process-architecture
-
http://www.chromium.org/developers/design-documents/threading
-
http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/#The_rendering_engines_threads
“All right, then, I'll go to hell.” – Huck Finn