8得票3回答
如何清晰地构建core.async通道之间的依赖关系?

假设我有一组计算,想要使用core.async异步运行。然而,其中几个函数依赖于其它函数的输出结果。在保证代码清晰的同时也要获得最佳性能,应该如何构建它? 我找到了几个可能的解决方案。 棱形图 - 看起来很合理,但我没有使用core.async通道进行测试;它需要使用fnk,这对我来说有...

8得票2回答
core.async能否使用序列实现其函数?

Rich Hickey在Strange Loop的传输器演示中告诉我们,Clojure 1.6中有两个map的实现,一个是在clojure.core中用于序列,另一个是在core.async中用于通道。 现在我们知道,在1.7中,有传输器,当给定函数而不是集合时,像map和filter这...

8得票3回答
Clojure core.async通道如何清理?

我第一次接触Clojure core.async,并正在浏览Rich Hickey的这个优秀演示文稿:http://www.infoq.com/presentations/clojure-core-async 我有一个问题,关于他在演示文稿末尾展示的例子: 根据Rich的说法,这个例子基本...

7得票3回答
如何确定从写入方面关闭core.async信道?

我有一个进程,基本上是长轮询实现的一部分。简而言之,客户端向服务器发出请求,服务器创建一个通道并将其返回给该客户端。该通道将包含客户端请求的信息。由于这是用于长轮询的,客户端请求的信息可能会更改。如果信息更改,服务器将更新写入通道,理论上,客户端可以获取更新并反映出来。 我面临的问题是可能会...

7得票3回答
Clojure核心异步库core.async,在超时后CPU卡死。有没有方法可以正确关闭(go..)块生成的宏线程?

基于core.async演示例子,我创建了下面类似的代码来处理一些使用多个通道进行的耗费CPU的工作,带有10秒的超时时间。然而,在主线程返回后,CPU使用率仍保持在大约700%(8个CPU的机器)。我必须手动在emacs中运行nrepl-close才能关闭Java进程。 是否有任何适当的方...

7得票1回答
Clojure核心异步put!与go块的比较

我读过这篇关于核心异步的好文章: http://www.core-async.info/reference/primitives 我理解: 1. put! 是异步的并可以接受回调。在简单场景下运作良好,但可能会陷入回调地狱。 2. go 可以解决回调地狱问题,并允许使用同步方式编写异步代码...

7得票2回答
使用Clojure core.async管道处理错误

我正在尝试了解使用core.async/pipeline处理错误的正确方法,我的流程如下: input --> xf-run-computation --> first-out first-out --> xf-run-computation --> last...