在这个博客帖子中,作者写道:
然而,格勒曼建立在简街的核心和异步库之上,简街是OCaml最大的工业用户之一。异步允许一元模拟并发,避免了其他事件驱动工具的大量回调问题,但它是相当单一的。
在J用于核心异步的ane街道文档页上,他们将其描述为:
特别是,我们认为异步可以更好地控制程序的并发性,从而更容易对可能的竞争条件进行推理。
我的问题是- core.async在Clojure中和OCaml中的核心异步是否有相似之处?我之所以这样问,是因为“为了避免回调头疼而设计的并发性”听起来非常类似于Clojure中的core.async应用程序。
发布于 2013-10-14 22:21:55
我找不到主要的相似之处。Clojure的core.async的概念似乎主要基于Go的并发模型--许多名称是相同的,比如通信通道,甚至是异步执行代码的go宏,比如语言本身命名的Go关键字。
另一方面,简街异步的概念在介绍性文件的这句话中作了总结
简而言之,其思想是使用非抢占的用户级线程和一流的阻塞操作,并在类型系统中表示阻塞。
它使用特殊类型的Deferred.t来通信异步计算的结果,这比与通道更相似。它还完全避开OS线程并使用用户线程,而core.async确实使用OS线程(至少在可用的情况下)。
编辑:在进一步的研究中,有一个明显的相似之处,那就是两个库都专注于提供在不绑定OS线程的情况下组合多个阻塞操作的方法。而且异步也通过Deferred.t模块提供(除了Pipe )通道。
https://stackoverflow.com/questions/19369689
复制相似问题