首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多播与core.async广播

多播与core.async广播
EN

Stack Overflow用户
提问于 2015-04-11 16:01:43
回答 1查看 910关注 0票数 3

我和core.async一起玩,发现和它一起工作很有趣。然而,我无法理解用于mult和广播的不同用例是什么。两者都需要吗?还是会被另一个取代?到目前为止,我发现的唯一不同之处是,使用mult更容易进入和卸载。不知道如何取消订阅广播,这是唯一的区别吗?

下面是一个示例,演示如何使用这两种方法解决问题。

代码语言:javascript
复制
;; Using mult with tap
(def in (chan))
(def multiple (mult in))

(def out-1 (chan))
(tap multiple out-1)

(def out-2 (chan))
(tap multiple out-2)

(go (>! in "PutIN"))

(go (prn "From out-1: " (<! out-1)))
(go (prn "From out-2: " (<! out-2)))

//

代码语言:javascript
复制
;; Using broadcast
(def bout-1 (chan))
(def bout-2 (chan))
(def broadcast-in (broadcast bout-1 bout-2))

(go (>! broadcast-in "PutINBroadcast"))
(go (prn "From bout-1: " (<! bout-1)))
(go (prn "From bout-2: " (<! bout-2)))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-12 11:13:25

这是带有clojure.core.async.lab名称空间的broadcast的注释。

core.async高实验特征探索 注意事项:

  1. 在此命名空间中定义的所有内容都是实验性的,可能会在没有警告的情况下更改或删除。
  2. 这个名称空间提供的许多特性与core.async的实现细节高度耦合。在较高抽象级别上操作的潜在特性适合包含在示例中。
  3. 这个名称空间提供的特性可能会在稍后的某个时候被提升到clojure.core.async,但并不能保证它们中的任何一个会被提升。

有很长一段时间没有人使用它了,它从未移植到ClojureScript。我预计它将在不久的将来从core.async中删除。mult是后来的发展方向。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29579931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档