2024 年 Clojure 现状调查 中分享您的想法!

欢迎!请参阅 关于 页面了解更多有关其工作方式的信息。

+6
core.async

Slack 上有几个人之前询问过关于虚拟线程和 core.async 的问题。这里是一个这样的线程示例 https://clojurians.slack.com/archives/C05423W6H/p1677676131782299

当然,还需要考虑 ClojureScript 和非 Loom 代码。我假设 core.async 将有一个虚拟线程感知的实现,并且可能存在于一个专门的命名空间中,以避免破坏旧代码。

我将这个问题作为特性请求以及供人们投票的中心位置来发布。

2 个答案

+3

虚拟线程可能使我们重新思考许多关于 core.async 的东西,我们已经在讨论它。Clojure 1.12 发布后,我认为它可能成为我们的priority goals(优先目标)。从发布的角度来看,还需要进行很多讨论(考虑 Java 21 的要求)。

0
by

Spindle 对 core.async 进行猴子补丁,以增加这种功能。注意:我不是这个库的作者,也不是(到目前为止)使用者,尽管我非常尊重作者对 Clojure 生态系统的贡献。

by
注意,即使在将主池修补为使用虚拟线程的情况下,core.async 仍然使用真实的操作系统线程进行调度。

在当今时代,我们可能会更多地使用 core.async 进行 CPU 密集型任务,而不是 I/O 密集型任务,而虚拟线程是针对 I/O 密集型任务进行优化的,因此仅仅通过修补 core.async 以使用虚拟线程就存在固有的紧张关系。
...