首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么合作公司有未来?

为什么合作公司有未来?
EN

Stack Overflow用户
提问于 2018-09-09 12:56:27
回答 1查看 871关注 0票数 1

一旦有了协同,您就可以创建管道(haskell:管道、管道;python:生成器)或协作事件循环(python: curio)。一旦你有了期货,你似乎也可以这样做:管道(生锈:期货-rs)和事件循环(铁锈: tokio)。因为期货是不合作的,他们需要一个基于回调的(甚至基于投票的期货需要回调)调度器来执行线程或进程池中的阻塞任务。将期货(库级)和协同(语言级)结合起来有什么好处,就像这些语言所做的那样:(python:异步),(铁锈: rfc),(ecmascript 6+)。从根本上说,它们似乎是同一个问题的冲突解决方案。

我不是在找正反比较,我也不相信期货是“一枪”合作的说法。看看铁锈,它用期货建立了一个完整的基于状态机的事件框架。我想知道python/异步和javascript为什么都需要协同和未来。为什么铁锈计划在其未来增加合作呢?这与事件的可镇定性有关吗?还是隐含的合作堆栈相对于连续传递期货的显式堆叠?我并不是完全理解这个论点,因为期货和合作都是用延续来实现的.还是它与直接或间接的风格有关?

EN

回答 1

Stack Overflow用户

发布于 2018-09-09 17:32:19

这些都是不同的(虽然相关的)不同的想法,不同的权力。

  • 未来的是一种抽象,它允许您开始一个进程,然后返回给处理程序,该处理程序是由原始调用方在进程完成时选择的。
  • 生成器比未来更强大,因为它可以产生多次。你可以在发电机上实现期货。
  • 协同器比生成器更强大,因为它可以选择向谁屈服,而不是只向调用者屈服。例如,它可以屈服于另一个协同线。您可以在协同机制的基础上实现生成器。

当更强大的工具可用时,为什么要使用功能较弱的工具呢?有时,实力较弱的工具是适合这项工作的工具。使用类型静态地对程序的不变量进行编码是很有用的,因为它可以让您确定什么东西不能做。

例如,当对远程服务器进行REST调用时,未来可能就足够了。如果REST客户端公开了一个生成器,您将不得不处理它可能多次屈服的可能性,即使您知道只有一个结果。如果它暴露了协同效应,那么您必须查阅文档,才能准确地确定您应该如何与它交互--尽管您实际上只需要做一件事情,这在您处理未来时是显而易见的。

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

https://stackoverflow.com/questions/52244749

复制
相关文章

相似问题

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