9得票3回答
如何停止ClojureScript/core.async中的go block?

有没有一种优雅的方法来停止正在运行的go块?(不引入标志并污染代码与检查/分支) (ns example (:require-macros [cljs.core.async.macros :refer [go]]) (:require [cljs.core.async ...

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

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

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

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

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...

15得票1回答
Clojure如何停止所有go块或关闭core.async中的所有通道

往往当我在repl中使用core.async时,一个go块会跑飞,因为我丢失了用于停止它的通道,原因是我重新加载了命名空间。比如,如果我从repl中运行下面的代码:(go (when (not= c (second (async/alts! [c (async/timeout 1000)]))...

37得票1回答
我能否使用http-kit和core.async创建完全非阻塞的后端应用程序?

我想知道是否可能使用http-kit组合一个完全非阻塞的Clojure后端Web应用程序。 (实际上,任何兼容Ring的http服务器都可以,我提到http-kit是因为它声称具有事件驱动的、非阻塞模型)。 编辑:简述 这个问题是我对非阻塞/异步/事件驱动系统本质的一些误解的症状。如...

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

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

10得票2回答
如何在Clojure (/Java)中稳健地进行大量并发的HTTPS请求

我有一串输入,希望在将结果传递给程序的另一部分之前进行2个HTTPS网络请求。典型的吞吐量为每秒50个。for each input: HTTP request A HTTP request B pass event on with (A.body and B.body...

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

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

8得票1回答
如何使用core.async正确地批量处理消息?

我希望能够通过计数和/或超时来批处理core.async通道上的消息(例如,10毫秒或10条消息,以先到者为准)。Tim Baldridge在批处理视频中提到了相关内容,但是他使用了core.async中已弃用的函数,而且没有使用transducers。我正在寻找类似以下的解决方案... (...