gpt4 book ai didi

clojure - ClojureScript 的 core.async 实现可以在 Clojure 中使用吗?

转载 作者:行者123 更新时间:2023-12-04 22:46:51 25 4
gpt4 key购买 nike

是否可以在 Clojure 中使用 ClojureScript 基于状态机的 core.async 实现,而不是 Clojure 的基于线程的实现?我希望能够在 JVM 上使用 core.async 但不使用线程。

最佳答案

没有办法以严格的单线程方式在 JVM 上使用 core.async,除非您愿意深入内部并替换用于 go 的线程池。 s 与一个只使用一个线程。

然而,正如 edbond 在他的评论中指出的那样,core.async 的 Clojure 版本确实使用状态机来处理 go s。然后这些状态机在线程池中的线程上运行,线程池的大小限制为处理器数量的两倍 + 42,因此可以启动数千个 go。 s 不使用尽可能多的真实线程。

JVM core.async 还提供了一个 thread类似 go 的宏,但会启动真正的线程,以及一系列双 bang 操作( <!!>!! 等),它们的工作方式与单 bang 对应项类似,但采用阻塞方式。您是否使用它们取决于您;如果你坚持 go和 single-bang 系列操作,core.async 永远不会启动超出上述线程池限制的任何线程。

关于clojure - ClojureScript 的 core.async 实现可以在 Clojure 中使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21725911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com