支持光纤/协同程序的脚本语言?

Log*_*ers 8 network-programming coroutine fiber

我想用一种语言来启动一个新的网络服务器项目,该语言通过光纤aka coroutines即用户模式线程来支持并发.确定我的选项究竟是什么一直非常困难,因为"coroutine"这个术语似乎用得很松散,意味着各种各样的东西,而"fiber"几乎只用于引用Win32 API.

为了这个问题的目的,协同程序/纤维:

  • 支持通过从嵌套函数中向调用函数生成结果来暂停执行的方法(即调用协程/光纤的调用堆栈中任意深度)
  • 支持将控制转移到当前执行点的另一个任意协程(即产生一个没有调用你的协程的协程)

我的语言选择是什么?我知道Ruby 1.9和Perl(Coro)都有支持,还有什么?任何具有成熟gc和动态方法调用的东西就足够了.

Den*_*nko 6

greenlet扩展符合Python中的要求(常规扩展,而不是Stackless).

Greenlet API有点低级,所以我建议使用gevent,它为您提供适合应用程序的API.(免责声明:我写过gevent)


Ale*_*lli 1

Stackless Python是满足您要求的另一种选择。如果 Python、Ruby 和 Perl 都不适合您的目的(尽管都满足您规定的要求),那么您可能还有其他未说明的要求或偏好 - 愿意将它们拼写出来吗?-)