首页 文章

扩展clojure core.async的功能

提问于
浏览
5

是否建议使用我自己的异步函数扩展core.async的功能?

通道的异步由 put!take! 处理,它们接受回调,但协议嵌套在async.impl.protocols命名空间中 . impl意味着什么?在这种情况下,还是可以实现它们?

例如,我可以将netty通道或java套接字包装为ReadPort和WritePort .

1 回答

  • 7

    core.async 协议的目的是作为实现自己的缓冲区,通道,端口等的实现挂钩 . 它们存在于impl下,因为它们是实现的一部分,而不是公共用户API .

    团队认为他们可以更改,直到发布非alpha版本的库(我没有时间框架) . 从async的发布到现在协议都没有改变,但是在这个时刻,特别是 put!take! 的流程发生了重大变化 .

    如果您现在愿意处理更改,请随意按照您的意愿实施 .

    Tim B花了相当多的时间来研究将异步通道连接到网络,并且在保留通道语义的同时做很困难 . 目前推荐的模式是使用与网络I / O通信的专用线程,并与应用程序中的通道进行通信(可能使用 put!take! ) . 此模式不需要实现内部协议 .

相关问题