Frage

Wie wir wissen - core.async verwendet csp und ähnelt dem Goroutinen von Go-Lang . Nun für ein Szenario wie Wählen Sie und alt Dies macht viel Sinn .

david nolen hat getan eine erstaunliche Demo hier zeigt core.async in Clojure bei der Arbeit in Animation in Clojurescript.

Ich kann jedoch eine ähnliche Funktionalität mit einer einfachen für Schleife replizieren. Sie können einen Demo hier sehen.

generasacodicetagpre.

Meine Frage ist was ist der eigentliche Nutzen von core.async in der '10, 000-Prozesse Animationsszenario '?

War es hilfreich?

Lösung

Der Zweck der Demo soll demonstrieren, dass das Erreichen der -Kranklinie in Clojurescript mit core.async. Die großen Gewinne schriftlich alle Threads in Standard-, sequentiellen Mode schriftlich, ohne dass sie in Callbacks zerrissen oder die Verschachtelung von Hand und in der Illusion des Blockierens auf Kanälen (einschließlich Timeoutkanäle; durch Blockieren, ein go, der die Kontrolle ergibt zu anderen gleichzeitigen generationspflichten). Natürlich gibt es noch keine Parallelität , aber dies ist ein vollständig orthogonales Konzept 1 ; Die Verwendung von Threads in GUI-Apps war eine nützliche Technik, lange bevor Multicore CPUs üblich wurde.

Der resultierende Code macht die Dinge wie Aktualisierungsrate und Rate der Aktualisierungsgeneration sofort ersichtlich. Sie könnten wahrscheinlich in der Klarheit mit generakodicetagcode-Loops und go in diesem speziellen Fall nahe kommen, da alle updategenerierenden generatierenden generationstechnischenetagcodes dasselbe tun, sondern mehrere generationsporticetagcodes auf den Markt bringen, um völlig andere Dinge zu tun, wäre gleichermaßen unkompliziert.


1 siehe zum Beispiel Parallelität /= Parallelität von Simon Marlowe oder Parallelität ist keine Parallelität von Robert Harper für eine erweiterte Diskussion von Dieser Punkt.

Andere Tipps

Wie Sie wahrscheinlich wissen, dass JavaScript ein einzelnes Gewinde ist, und wenn Sie core.async in Bezug auf "tatsächliche Ausführung / Vorgänge" verwenden, werden Sie nicht viel von Vorteil, aber wenn der Code-basierte Code mit dem Core.Assync-Code verglichen wird.In einer Laufzeitumgebung, die alle CPU-Kerne (wie JVM) verwendet, sehen Sie den Leistungsunternehmen von Async-Code.

grundsätzlich, wenn Sie einen reinen generationspflichtigen generationstagcode haben (ohne Abhilfe von Runtime Enviroment-Funktionen wie DOM usw.), dass Sie mit core.async geschrieben haben, können Sie einfach denselben Code im Browser oder auf der Back-End-Multicore-CPU ausführenUnd Sie werden alle CPU-Kerne verwenden.Dies ist etwas in den Zeilen, um die "Denoationssemantik" und "Operations-Semantik" Ihres Codes zu trennen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top