9得票2回答
Clojure - 为什么在向通道中进行阻塞插入时会出现执行停滞?(core.async)

考虑以下代码片段: 请看下面的代码: (let [chs (repeatedly 10 chan)] (doseq [c chs] (>!! c "hello")) (doseq [c chs] (println (<!! c)))) 执行这个会一直...

8得票1回答
Clojure的core.async和Jane Street的OCaml Core Async类似吗?

在这篇博客文章中,作者写道: 然而,Grenchman是建立在Jane Street的Core和Async库之上的,Jane Street是OCaml最大的产业用户之一。Async允许使用单子伪并发,避免了其他事件驱动工具中的大量回调困扰,但它相当庞大。 在Jane Street的Co...

9得票3回答
如何最佳关闭一个Clojure core.async进程管道

我有一个Clojure处理应用程序,它是一系列通道的管道。每个处理步骤都是异步进行计算的(即使用http-kit或其他方式进行http请求),并将其结果放在输出通道上。这样下一步就可以从该通道读取并进行计算。 我的主要函数如下: (defn -main [args] (-> fil...

20得票1回答
ClojureScript、Om和Core.async:如何正确处理事件

我已经研究了使用Om进行富客户端网站设计。这也是我第一次使用core.async。在阅读教程https://github.com/swannodette/om/wiki/Basic-Tutorial时,我看到了使用core.async通道来处理删除操作的用法(与在处理程序中完成所有工作相反)。...

12得票1回答
CSP是否是在Scala中替代Actor模型的选择?

在1978年Hoare的一篇论文中,我们有了一个名为通信顺序进程(Communicating Sequential Processes)的想法。这被Go, Occam以及Clojure中的core.async所使用。 在Scala中,是否可以将CSP作为Actor Model的替代方案?(我...

17得票3回答
如何对Clojure核心异步Go宏进行单元测试?

我正在尝试在使用core.async go宏时编写单元测试。以下是一个朴素的测试编写方式,但似乎go块内的代码没有被执行。(ns app.core-test (:require [clojure.test :refer :all] [clojure.core.asy...

9得票1回答
当mapcat在core.async中破坏了反压时,内存泄漏在哪里?

我在Clojure中编写了一些core.async代码,当我运行它时,它消耗了所有可用的内存并以错误失败。似乎在core.async管道中使用mapcat会破坏反压(这是不幸的,原因超出了本问题的范围)。 以下是一些演示问题的代码,通过计算“:x”进入和离开“mapcat”转换器来说明问题:...

61得票5回答
比较core.async和函数响应式编程(+Rx)

当我比较Clojure的core.async和所谓的响应式扩展(Rx)以及FRP时,我有些困惑。它们似乎解决了相似的异步问题,我想知道它们的主要区别,并在什么情况下优先使用其中之一。请问能否给出解释? 编辑:为了鼓励更深入的回答,我想让问题更具体: Core.async允许我编写看起来同...

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

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

10得票1回答
无法在core.async的go块中使用for循环?

我刚接触clojure core.async库,正在通过实验尝试理解它。 但当我尝试以下代码时:(let [i (async/chan)] (async/go (doall (for [r [1 2 3]] (async/>! i r))))) 它给我一个非常奇怪的异常:Compile...