5

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

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

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

4

1 回答 1

7

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

团队认为它们是开放的,直到发布库的非 alpha 版本(我对此没有时间表)。从 async 的发布到现在,协议没有改变,但是目前在进程中发生了重大变化,特别是put!take!.

如果您现在愿意处理捕获更改,请随意实施。

Tim B 花了很多时间研究将异步通道连接到网络,在保留通道语义的同时做到这一点非常具有挑战性。目前推荐的模式是使用专用线程与网络 I/O 通信并在“边缘”与应用程序中的通道通信(可能使用put!and take!)。这种模式不需要实现内部协议。

于 2014-02-05T05:38:57.127 回答