8

ファイバー、別名コルーチン、別名ユーザー モード スレッドを介した同時実行性をサポートする言語で、新しいネットワーク サーバー プロジェクトを開始したいと考えています。「コルーチン」という用語はさまざまなことを意味するために非常に大まかに使用されているようであり、「ファイバー」はほぼ独占的に Win32 API に関して使用されているため、私のオプションが何であるかを正確に判断することは非常に困難でした。

この質問の目的のために、コルーチン/ファイバー:

  • ネストされた関数内から呼び出し元の関数に結果を与えることによって実行を一時停止するメソッドをサポートする (つまり、コルーチン/ファイバーが呼び出されたコール スタックの任意の深さ)
  • 現在の実行時点で別の任意のコルーチンに制御を移すことをサポートします (つまり、コルーチンを呼び出さなかったコルーチンに譲ります)

言語オプションは何ですか? Ruby 1.9 と Perl (Coro) の両方がサポートされていることは知っていますが、他に何がありますか? 成熟した gc と動的メソッド呼び出しを備えたもので十分です。

4

5 に答える 5

6

greenlet拡張機能は、Python での要件を満たしています (スタックレスではなく通常のもの)。

Greenlet API は少し低レベルなので、アプリケーションに適した API を提供するgeventを使用することをお勧めします。(免責事項: gevent を書きました)

于 2010-01-02T06:25:44.867 に答える
4

Lua はコルーチンをサポートしています。 http://lua-users.org/wiki/CoroutinesTutorialを参照して、試してみてください。

于 2009-12-24T03:04:13.087 に答える
2

現在ベータ版のTcl 8.6は、コルーチンをサポートします。詳細については、Tcl Wiki のコルーチン ページを参照してください。

于 2010-09-03T14:38:43.630 に答える
1

スタックレス Pythonは、要件を満たすもう 1 つのオプションです。Python、Ruby、および Perl がすべて目的に適さない場合 (すべてが指定された要件を満たしているにもかかわらず)、おそらく他の指定されていない要件または設定があります。

于 2009-12-24T02:58:38.693 に答える
1

スキームにcall-with-current-continuationは、あらゆる種類のフロー制御を構築できる構成要素があります。あなたが言及した2つの用途を確実にサポートできます。

PLT SchemeChicken Schemeなど、Scheme の堅牢で広く利用可能な実装が多数あります。

于 2009-12-24T03:02:11.290 に答える