首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >连续、协同和尾叫优化

连续、协同和尾叫优化
EN

Software Engineering用户
提问于 2014-07-06 18:57:14
回答 1查看 923关注 0票数 1

我正在努力学习延续性,并使用它们在计划中实现协同。

我有两个过程(协同线) ab,我以以下方式在它们之间切换:

代码语言:javascript
运行
复制
;; c is a continuation.
(define (a c)
   ...
   ;; Switch to the other coroutine.
   (call/cc c)
   ...


(define (b c)
   ...
   ;; Switch to the other coroutine.
   (call/cc c)
   ...

我从

代码语言:javascript
运行
复制
(a b)

我测试了一个小示例,实际上,执行在这两个过程之间来回切换,直到两个过程中的一个终止而不调用作为参数的延续。

我有两个问题:

  1. 我的例子是否是使用连续的coroutines的适当/惯用实现?
  2. 尾叫优化对于实现具有连续性的协同任务是强制性的吗?在我的解决方案中,如果Scheme不提供TCO,那么在这两个协同器之间频繁切换可能会导致堆栈溢出。有没有其他不需要TCO的解决方案?

编辑

Basile的评论似乎足以回答我的问题。问题的背景是,我希望这种方法能够在Python中实现协同,在那里我没有TCO。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2014-07-12 07:22:30

正如我所说:

  • 是的,您的示例是使用延续实现协同机制的适当实现。
  • 是的,尾叫优化对于实现连续的协同是必须的.
票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/247046

复制
相关文章

相似问题

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