Я хотел бы запустить новый проект сетевого сервера на языке, который поддерживает параллелизм через волокна иначе сопрограммы иначе потоки непривилегированного режима. Определение, что точно является моими опциями, было чрезвычайно трудным, поскольку термин "сопрограмма", кажется, используется вполне свободно для значения множества вещей, и "волокно" используется почти исключительно в отношении API Win32.
В целях этого вопроса, сопрограмм/волокон:
Каковы мои опции языка? Я знаю Ruby 1.9 и Perl (Коро), у обоих есть поддержка, что еще? Что-либо с опытным gc и динамическим вызовом метода достаточно.
Stackless Python - еще один вариант, отвечающий вашим требованиям. Если Python, Ruby и Perl не подходят для ваших целей (несмотря на то, что все они удовлетворяют вашим заявленным требованиям), вероятно, у вас есть другие нестандартные требования или предпочтения - хотите их прописать?-)
.Луа поддерживает корутины, см. http://lua-users.org/wiki/CoroutinesTutorial, попробуй!
. Схема имеет вызов с прерыванием тока
, который является строительным блоком, на котором могут быть построены все виды регулирования расхода. Она определённо может поддерживать два вида использования, о которых Вы упомянули.
Существует множество надежных, широко доступных реализаций схемы, таких как PLT Scheme и Chicken Scheme.
.greenlet удовлетворяет вашим требованиям на Python (обычный, не Stackless).
Greenlet API немного низкоуровневый, поэтому я рекомендую использовать gevent, который дает вам API, подходящий для приложения. (Отказ от ответственности: я написал gevent)
.