是否建议使用我自己的异步函数扩展core.async的功能?
通道的异步由接受回调的put!
和take!
处理,但协议嵌套在async.impl.protocols
命名空间中。在这种情况下, impl 是否意味着保持不变!,还是可以实现它们?
例如,我可以将netty通道或java套接字包装为ReadPort和WritePort。
答案 0 :(得分:7)
core.async
协议的目的是作为实现自己的缓冲区,通道,端口等的实现挂钩。它们存在于impl下,因为它们是实现的一部分,而不是公共用户API。
团队认为他们可以更改,直到发布非alpha版本的库(我没有时间框架)。从async的发布到现在,协议都没有改变,但是在这个时刻,特别是put!
和take!
的流程发生了重大变化。
如果您现在愿意处理变更问题,请随意按照您的意愿实施。
Tim B花了相当多的时间研究将异步通道连接到网络,在保留通道语义的同时做很困难。目前推荐的模式是使用与网络I / O通信的专用线程,并在“边缘”与应用程序中的通道进行通信(可能使用put!
和take!
)。此模式不需要实现内部协议。