首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Clojure core.async和Lamina

Clojure core.async和Lamina
EN

Stack Overflow用户
提问于 2014-11-07 12:12:39
回答 2查看 773关注 0票数 5

core.async是取代了拉米纳,还是打算取代拉米纳?

如果没有,是否有一种比另一种更可取的明显情况?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-07 17:26:27

我是“Lamina”的作者。我认为core.async是一个精心制作的库,它的设计比Lamina要清晰得多.有些事情我认为Lamina更擅长,主要与内省、性能和可扩展性有关。

我在core.async中遇到的最大问题是,除了流抽象之外,它还带来了一个执行模型(一切都发生在core.async线程池上),这意味着如果您在任何地方使用它,它都会限制代码库中其他所有内容的设计和实现。

我已经看到了许多将流公开为core.async通道的“异步”库,这意味着只有在您满意地使用core.async执行模型的情况下才能使用这些库。

我即将发布一个库,它试图成为一种“最小”的流表示,可以用来代替core.async、Lamina、Java阻塞队列等,称为Manifold。流形流可以被胁迫到core.async通道、Lamina通道等等,而这些东西中的任何一个都可以强制返回到流形流中。

我认为“异步”景观还很年轻,还有很多未经探索的问题。抽象的规模有多大,在生产中调试起来有多容易,等等。JVM提供了许多内省工具,但是由于异步机制使用的是完全不同的执行模型,我们基本上从头开始。我不会告诉您在core.async上使用Lamina,但是我要提醒您,core.async是应用程序级的抽象,而不是库级的抽象。

票数 14
EN

Stack Overflow用户

发布于 2014-11-07 12:21:07

core.asyncLamina是两个不同的项目,它们并不打算相互替代。实际上,他们可以一起玩得很好,-if你想-。

Lamina是一种面向流的方法,而core.async是面向消息的。

该用哪一种取决于你。在Lamina中,重要的是您为通道定义的回调,而在core.async中,通道和go块是解耦的,这是更加灵活和模块化的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26801027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档