是否建议使用我自己的异步函数来扩展 core.async 的功能?
通道的异步性由其处理put!
并take!
接受回调,但协议嵌套在async.impl.protocols
命名空间中。impl是否意味着远离!在这种情况下,还是可以实施它们?
例如,我可以将 netty 通道或 java 套接字包装为 ReadPort 和 WritePort。
是否建议使用我自己的异步函数来扩展 core.async 的功能?
通道的异步性由其处理put!
并take!
接受回调,但协议嵌套在async.impl.protocols
命名空间中。impl是否意味着远离!在这种情况下,还是可以实施它们?
例如,我可以将 netty 通道或 java 套接字包装为 ReadPort 和 WritePort。
这些core.async
协议的目的是充当实现您自己的缓冲区、通道、端口等的实现挂钩。它们存在于 impl 之下,因为它们是实现的一部分,而不是公共用户 API。
团队认为它们是开放的,直到发布库的非 alpha 版本(我对此没有时间表)。从 async 的发布到现在,协议没有改变,但是目前在进程中发生了重大变化,特别是put!
和take!
.
如果您现在愿意处理捕获更改,请随意实施。
Tim B 花了很多时间研究将异步通道连接到网络,在保留通道语义的同时做到这一点非常具有挑战性。目前推荐的模式是使用专用线程与网络 I/O 通信并在“边缘”与应用程序中的通道通信(可能使用put!
and take!
)。这种模式不需要实现内部协议。