Die Protokolle core.async
sollen als Implementierungs-Hooks für die Implementierung eigener Puffer, Kanäle, Ports usw. dienen. Sie existieren unter impl, da sie Teil der Implementierung sind, nicht die API für öffentliche Benutzer.
Das Team betrachtet sie als offen für Änderungen, bis eine Nicht-Alpha-Version der Bibliothek veröffentlicht wird (ich habe keinen Zeitrahmen dafür). Von der async-Version bis jetzt haben sich die Protokolle nicht geändert, jedoch gibt es in diesem Moment eine bahnbrechende Prozessänderung speziell zu put!
und take!
.
Wenn Sie bereit sind, sich mit Änderungen abzumühen, können Sie dies nach Belieben implementieren.
Tim B hat viel Zeit damit verbracht, asynchrone Kanäle mit dem Netzwerk zu verbinden, und es ist sehr schwierig, die Semantik des Kanals beizubehalten. Das empfohlene Muster hierfür ist die Verwendung dedizierter Threads, die mit Netzwerk-E/A kommunizieren und "am Rand" mit den Kanälen in der Anwendung kommunizieren (wahrscheinlich unter Verwendung von put!
und take!
). Dieses Muster erfordert keine Implementierung der internen Protokolle.
Nun, hier * verwendet *, um eine Antwort hier zu sein, die im Wesentlichen sagte "mach es!" Es scheint, als wäre das zurückgezogen worden. –
Ich würde sagen, mach was du willst! – Hendekagon
@Hendekagon, aber wenn das Protokoll versteckt ist, dann ist die Wahrscheinlichkeit größer, dass es sich ohne vorherige Ankündigung ändert. Das wäre ein Bär. –