9得票2回答
核心.async中的go块和线程的区别

来自http://martintrojer.github.io/clojure/2013/07/07/coreasync-and-blocking-io/: To get a bit more concrete let's see what happens when we try to i...

9得票1回答
如何使用转换器从另一个通道创建通道?

我想从另一个仅筛选特定消息的通道创建 clojure.core.async 通道。因此,我找到了一个名为 filter< 的函数。 => (def c1 (chan)) => (def c2 (filter< even? c1)) => (put! c1 1) ...

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

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

9得票2回答
使用core.async等待n个通道

同样的,alt!等待n个通道中的一个获得值,我正在寻找等待所有n个通道都获得值的惯用方法。 我需要这个是因为我"spawn"了n个go块来处理异步任务,并且我想知道它们何时完成。我相信有一种非常优美的方法可以实现这一点。

9得票1回答
在Clojure中,使用core.async通道来消费http-kit的POST结果是否明智?

我是新手使用Clojure,正在编写一个库将POST结果发送到服务器进行响应。我通过将响应放入core.async通道来消费响应。这样做是否合理或者有更好的方法? 以下是我所做的工作的高级概述: (defn my-post-request [channel options] (clie...

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

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

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

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

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

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

8得票2回答
我们能将Clojure的core.async描述为"延续传递风格"吗?

在Clojure的core.async库中,我们看到一个宏,它创建了一个状态机,用于包装go块以创建处理阻塞IO的通道。 这似乎是模仿 C#的async 和 Go语言的goroutines。 在老练的阴谋家中,他们描述了传递延续的技术。(这似乎是基于call/cc的)。我们还看到了Davi...

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

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