1unitedpower: Mehrere requestAnimationFrame() ...problematisch?

Beitrag lesen

Hallo 1unitedpower,

Ist es eigentlich prinzipiell zulässig [bzw. wohl eher ratsam] sowie Good Practice, mehrere requestAnimationFrame() parallel ablaufen zu lassen?

Klar ist das zulässig. Kleiner Tipp am Rande: Du meinst "konkurrierend" bzw. "asynchron" und nicht "parallel".

Zulässig vielleicht, aber in JavaScript nicht möglich. Die requestAnimationFrame Callbacks werden strikt nacheinander ausgeführt. JavaScript ist an dieser Stelle nicht parallelisierbar.

Also bevor wir hier noch mehr Verwirrung stiften, ich wollte lediglich darauf hinweisen, dass es einen Unterschied zwischen "parallel" und "konkurrierend" gibt. "Parallelismus" wird auf der Hardware implementiert: Im einfachsten Fall stell man sich vor, dass zwei oder mehr Prozessoren gleichzeitig Arbeit verrichten.

"Konkurrenz" findet auf der Software-Ebene statt. Es bedeutet, dass man die Ausführungsreihenfolge verschiedener Berechnung unterspezifiziert lässt. requestAnimationFrame ist ein Beispiel für Konkurrenz: man sagt dem Browser nur: bitte führe die Callback-Funktion aus bevor du den nächstens Frame zeichnest – wann auch immer das ist. Man lässt unterspezifiziert wann genau die Callback-Funktion aufgerufen wird − insbesondere in Bezug auf andere Browser-Events wie Timer oder Benutzereingaben. Worker Threads sind ebenfalls ein Beispiel für Konkurrenz. Man lässt unspezifiziert wann welchem Thread rechenleistung zugeteilt wird. Verschiedene Threads konkurrieren um Rechenleistung. Hat ein System nur einen Prozessor, dann muss das System die Rechenleistung des Prozessors aufteilen und nacheinander den einzelnen Threads zur Verfügung stellen. Hat ein System mehrere Prozessoren kann es von dieser Unterspezifikation gebrauch machen, und mehreren Threads gleichzeitg Rechenleistung auf verschiedenen CPUs zur Verfügung stellen. Dann hat man auf Hardware-Ebene wieder echte Parallelität.