Close Methode (zumindest in Java-Welt) ist etwas, das Sie als ein guter Bürger anrufen müssen, wenn Sie damit fertig sind verwandte Ressource. Irgendwie habe ich automatisch begonnen, das gleiche für die close! Funktion von core.async Bibliothek anzuwenden. Diese channels sind nicht so eng wie ich es verstehe und deshalb bin ich mir nicht sicher, ob es notwendig ist, zu schließen !. Ist es in Ordnung, Kanäle (lokale) für Garbage Collection zu belassen, ohne sie zu schließen?Sollten clojure core.async-Kanäle geschlossen werden, wenn sie nicht mehr verwendet werden?
9
A
Antwort
7
Es ist in Ordnung, sie dem Müllsammler zu lassen, es sei denn, sie zu schließen hat Bedeutung in Ihrem Programm. Es ist üblich, sie als Signal für andere Komponenten zu schließen, damit es Zeit ist, sich selbst abzuschalten. Andere Kanäle sollen für immer verwendet werden und es wird niemals erwartet, dass sie geschlossen oder Müll gesammelt werden. In noch anderen Fällen wird der Kanal verwendet, um einen Wert an einen Verbraucher zu übermitteln, und dann sind sowohl der Produzent als auch der Verbraucher fertig und der Kanal wird gecodiert. In diesem letzten Fall müssen sie nicht geschlossen werden.
Verwandte Themen
- 1. Sollten ausstehende Absichten abgebrochen werden, wenn sie nicht verwendet werden
- 2. Clojure Best Practice: Wann sollten Metadaten verwendet werden?
- 3. Welche Textboxereignisse sollten verwendet werden
- 4. Wann sollten Speicherkarten verwendet werden?
- 5. Was machen Clojure-Symbole, wenn sie als Funktionen verwendet werden?
- 6. Wie werden Clojure-Hierarchien verwendet?
- 7. Excel: Wie werden mehr Informationen angezeigt, wenn Zwischensummen verwendet werden?
- 8. Warum sollten protokollbezogene URLs überhaupt verwendet werden?
- 9. Wann sollten schwache Referenzen verwendet werden?
- 10. Sollten vorbereitete Anweisungen aufgehoben werden, wenn sie in gespeicherten Prozeduren verwendet werden?
- 11. Wann sollten Makrofunktionen in Erlang verwendet werden?
- 12. Wann sollten zusammengesetzte Indizes verwendet werden?
- 13. Wann sollten Klassen in C# verwendet werden?
- 14. Sollten jQuerys parseJSON/getJSON-Methoden verwendet werden?
- 15. Anwendungsdesign - Wann sollten Schnittstellen verwendet werden?
- 16. Wann sollten JavaScript-Template-Engines verwendet werden?
- 17. Wann sollten Pragmas auf SQLite verwendet werden?
- 18. Wenn RegexOptions.Compiled nicht verwendet werden soll
- 19. Sollten Webservices zur Erstellung ganzer Websites verwendet werden?
- 20. Powershell ParameterSet Fehler, wenn zwei oder mehr Parameter verwendet werden
- 21. Slide-Menü geschlossen werden, wenn Tab geklickt
- 22. Wann sollten mehrere Sprite-Batches in XNA verwendet werden?
- 23. sollte Class.getResourceAsStream geschlossen werden?
- 24. Verbindungen werden nicht geschlossen, wenn Transaction Binding = Explicit Unbind verwendet wird; In Verbindungszeichenfolge
- 25. Sollen Dialoge automatisch geschlossen werden?
- 26. Wann sollten Singleton-Klassen in Ruby verwendet werden?
- 27. Sollten Locks und Mutexes in C# zusammen verwendet werden?
- 28. Wann sollten Erweiterungsmethoden vermieden werden?
- 29. Wann sollten 1-zu-1-Beziehungen zwischen Datenbanktabellen verwendet werden?
- 30. C# WinForms - Bestimmte Steuerelemente deaktivieren, wenn sie nicht verwendet werden?
Schöne Antwort, nur ein Beispiel. "Wann hat das Sinn?" kann sein, wenn Sie async/reduce verwenden, was einen geschlossenen Eingangskanal erfordert, bevor etwas ausgegeben wird. –
Das häufigste Beispiel ist core.async/timeout, bei dem ein Kanal geschlossen wird, um anzuzeigen, dass die Zeit abgelaufen ist und kein Wert erstellt wurde. In der Regel würde das Schließen eines Kanals nach dem Erzielen eines Werts oder anstelle von einem erfolgen. –