我想用一種支持併發的語言來啓動一個新的網絡服務器項目,這種語言通過光纖又名協程(又稱用戶模式線程)來支持併發。確定我的選項到底是什麼非常困難,因爲術語「協同程序」似乎被用來很鬆散地表示各種各樣的東西,並且「纖維」幾乎完全用於參考Win32 API。支持光纖/協程的腳本語言?
對於這個問題的目的,協程/纖維:
- 通過從其中在調用棧從嵌套函數中得到的結果到調用函數(即任意深度暫停執行的支持方法的協程/纖維調用)
- 支持在當前執行點(即收益率的協程是沒打電話給你的協同程序)
什麼是我的語言選項將控制轉移到另一個任意協程S'我知道Ruby 1.9和Perl(Coro)都有支持,還有什麼?任何具有成熟gc和動態方法調用的東西都已足夠。
我想在選擇語言之前評估我的所有選項。我不會立即選擇ruby,因爲GC可能會很慢,而且很大,所以我不會立即選擇Perl,因爲它的語法比較難看。這就是說,Perl是目前的領跑者。 – 2009-12-24 03:11:14
另外,你知道PEP 342是否能讓普通的Python變得合適嗎? send()看起來像是朝着正確的方向邁出的一步,但我無法確定是否可以從調用堆棧的深處獲得收益。 – 2009-12-24 03:21:23
@Logan,一個Python生成器只能向其調用者屈服,而不是任何其他任意位置 - 無論如何構建協程系統,一個使用「蹦牀」安排,如PEP 342中的示例3所示。 – 2009-12-24 03:32:18