gpt4 book ai didi

asynchronous - Clojure 的 core.async 是否类似于 Jane Street 的 OCaml Core Async?

转载 作者:行者123 更新时间:2023-12-04 07:38:56 24 4
gpt4 key购买 nike

在这个 blog post作者写道:

However, Grenchman is built on the Core and Async libraries from Jane Street, one of the largest industrial users of OCaml. Async allows for monadic faux-concurrency that avoids a lot of the callback headaches of other event-driven tools, but it is fairly monolithic.



在 J ane Street Documentation Page for Core Async他们将其描述为:

In particular, we think that Async does a better of controlling the concurrency of your program, making it easier to reason about possible race conditions.



我的问题是 - core.async in Clojure 之间是否有相似之处?和 OCaml 中的核心异步?我问是因为“避免回调头痛的虚假并发”听起来与 Clojure 中 core.async 的应用非常相似。

最佳答案

我无法发现主要的相似之处。 Clojure 的概念core.async似乎主要基于 Go 的并发模型 - 许多名称都是相同的,比如通信 channel ,甚至是 go用于异步执行代码的宏,例如 Go 语言本身命名的关键字。

另一方面,Jane Street 的 Async 的概念总结在 the introductory documentation 的这句话中。 :

In a nutshell, the idea is to use non-preemptive user-level threads and first-class blocking operations with blocking expressed in the type system.



它使用特殊类型 Deferred.t传达异步计算的结果,这更类似于 Clojure future 而不是 channel 。它还完全避开操作系统线程并使用用户线程,而 core.async确实使用了操作系统线程(至少如果它们可用的话)。

编辑 :经过一些进一步的调查,有一个明显的相似之处在于两个库都专注于提供组合多个阻塞操作而不占用操作系统线程的方法。并且 Async 还通过 Deferred.t 提供(除了 Pipe ) channel 模块。

关于asynchronous - Clojure 的 core.async 是否类似于 Jane Street 的 OCaml Core Async?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19369689/

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