【发布时间】:2010-09-14 01:20:15
【问题描述】:
有没有人做过让 Ruby 做延续的工作(比如 Smalltalk 上的 Seaside)?
【问题讨论】:
标签: ruby continuations
有没有人做过让 Ruby 做延续的工作(比如 Smalltalk 上的 Seaside)?
【问题讨论】:
标签: ruby continuations
顺便说一句,this 是使用延续实现的可重新启动异常(也称为条件)的示例。我用过几次,在 Ruby 工具箱中拥有它是一件很酷的事情。
【讨论】:
neverblock 使用 1.9 光纤作为单线程 ruby 网络服务器
【讨论】:
是的,在大多数情况下。就我的记忆而言,MRI (1.8) 已经支持它们,Ruby 1.9 (YARV) does it, too,Rubinius 也是如此。 JRuby 和 IronRuby 没有延续,而且他们不太可能获得它们(JVM 和 CLR 使用堆栈自检来保证安全性)
Ruby 作为一种语言支持通过callcc 关键字进行延续。例如,它们用于实现标准库中的Generator 类。
基于Continuation 的Web 框架(如seaside,或Arc 的std. 库中的一个)似乎不太受欢迎。我发现 wee 声称可以让您执行可选的延续,但我从未使用过它。
【讨论】:
正如其他人已经说过的,Ruby 1.8 支持延续。
然而,Ruby 1.9 已经有一段时间不支持它们了。它们在今年的某个时候被重新添加,但大多数其他 Ruby 解释器(JRuby、IronRuby 等)不支持它们。
如果您希望您的代码在主线 Ruby 以外的其他平台上可用,我建议不要使用它们。
阅读this InfoQ article 了解有关该主题的更全面讨论。
【讨论】: