2

お互いを永遠に呼び合う 2 つの Ruby のファイバーを作成することは可能ですか? Ruby は最終的にスタック オーバーフローでクラッシュするのでしょうか、それともファイバーはスタック スペースを消費しませんか?

4

2 に答える 2

1

ファイバを再開しても、スタック サイズは増加しません。他のファイバーを再開する前に毎回関数に再帰すると、通常の無限再帰の場合と同様に、スタックがオーバーフローするまで増加します。

于 2013-05-25T00:16:17.747 に答える
1

プログラミング言語で無限ループを書くと、いずれ何かが壊れます。私は Ruby ファイバーに詳しくありませんが、メソッドを介して相互に呼び出している場合、スタックは最終的にオーバーフローします。

無限ループのシナリオで壊れる可能性があるその他のものは、限られたリソースであるため、通常、ディスク容量とネットワーク帯域幅は次の 2 つです (通常はタイムアウトになるため、ネットワーク)。

于 2011-09-16T18:45:46.103 に答える