我想用一种语言来启动一个新的网络服务器项目,该语言通过光纤(也称为协同程序,即用户模式线程)来支持并发。确定我的选项究竟是什么一直非常困难,因为“coroutine”一词似乎用得很松散,意味着各种各样的东西,而“fiber”几乎只用于参考Win32 API。
出于这个问题的目的,协同程序/纤维:
我的语言选项是什么?我知道Ruby 1.9和Perl(Coro)都有支持,还有什么?任何具有成熟gc和动态方法调用的东西就足够了。
答案 0 :(得分:6)
greenlet扩展符合您在Python中的要求(常规,而不是Stackless)。
Greenlet API有点低级,所以我建议使用gevent,它为您提供适合应用程序的API。 (免责声明:我写过gevent)
答案 1 :(得分:4)
Lua支持协同程序,请参阅http://lua-users.org/wiki/CoroutinesTutorial,试一试!
答案 2 :(得分:2)
Tcl 8.6将支持协同程序。有关详细信息,请参阅the Tcl Wiki coroutine page
答案 3 :(得分:1)
Stackless Python是满足您要求的另一种选择。如果Python,Ruby和Perl都不适合您的目的(尽管都满足您的要求),您可能还有其他未说明的要求或偏好 - 小心拼出它们吗? - )
答案 4 :(得分:1)
Scheme具有call-with-current-continuation
,这是一个构建块,可以在其上构建各种流控制。它绝对可以支持你提到的两种用途。
有许多强大且广泛可用的Scheme实现,例如PLT Scheme和Chicken Scheme。