ich bei Clojure core.async zum ersten Mal suchen, und wurde durch diese hervorragende Präsentation gehe von Rich Hickey: http://www.infoq.com/presentations/clojure-core-asyncWie werden die core.async-Kanäle von clojure aufgeräumt?
Ich hatte eine Frage über das Beispiel, das er am Ende seiner Präsentation zeigt:
Laut Reich, in diesem Beispiel versucht im Grunde ein Web, Video zu bekommen, und Bildergebnis für eine bestimmte Abfrage. Er probiert zwei verschiedene Quellen parallel für jedes dieser Ergebnisse aus und zieht für jeden das schnellste Ergebnis. Und die gesamte Operation kann nicht mehr als 80 ms dauern, wenn wir also z.B. Ein Image-Ergebnis in 80ms, wir geben einfach auf. Die "schnellste" Funktion erstellt und gibt einen neuen Kanal zurück und startet zwei Go-Prozesse, um ein Ergebnis zu erhalten und es auf den Kanal zu setzen. Dann nehmen wir einfach das erste Ergebnis vom "schnellsten" Kanal und schlagen es auf den c-Kanal.
Meine Frage: Was passiert mit diesen drei temporären, unbenannten "schnellsten" Kanälen, nachdem wir ihr erstes Ergebnis gemacht haben? Vermutlich gibt es noch einen Go-Prozess, der geparkt ist, um das zweite Ergebnis auf den Kanal zu legen, aber niemand hört zu, so dass es nie wirklich abgeschlossen wird. Und da der Kanal nie an irgendetwas gebunden ist, scheint es nicht so, als hätten wir jemals wieder etwas damit zu tun. Wird der Prozess & Kanal "realisieren", dass niemand sich mehr um ihre Ergebnisse kümmert und sich aufräumt? Oder haben wir im Wesentlichen nur drei Kanäle/Prozesse in diesem Code "durchlecken"?
Hmm, okay. Ich habe jetzt zwei widersprüchliche Antworten von dir und Leon. Wären Sie in der Lage gewesen, eine Referenz für Ihren Anspruch bereitzustellen? – Ord
Ja, bitte Link zu den Implementierungsdetails. Bitte erläutern Sie auch, wie dies im obigen Codebeispiel funktionieren würde. –
E. g. nimm den Go-Block in L4: Angenommen, 'c' blockiert den Put. "Schnellster" macht einen zweiten Satz, der nicht verbraucht wird. Wann genau, in dem obigen Codebeispiel, sind "c" und der Kanal von "schnellste" Müll gesammelt zurückgegeben? –