Ruby 无限红宝石纤维?

Ruby 无限红宝石纤维?,ruby,fibers,Ruby,Fibers,有没有可能创建两个Ruby的光纤,永远互相呼叫?Ruby最终会因为堆栈溢出而崩溃,还是光纤不会占用堆栈空间?如果用任何编程语言编写一个无限循环,某些东西最终会崩溃。我不熟悉Ruby光纤,但如果它们通过方法相互调用,那么堆栈最终将溢出 在无限循环场景中,其他可能中断的因素是资源有限的任何因素,因此磁盘空间和网络带宽通常是下两个因素(网络,因为事情通常超时)。恢复光纤不会增加堆栈大小。如果您每次在恢复另一个光纤之前都递归到一个函数中,那么堆栈将增加直到溢出,就像无限递归通常所做的那样。FWIW Ru

有没有可能创建两个Ruby的光纤,永远互相呼叫?Ruby最终会因为堆栈溢出而崩溃,还是光纤不会占用堆栈空间?

如果用任何编程语言编写一个无限循环,某些东西最终会崩溃。我不熟悉Ruby光纤,但如果它们通过方法相互调用,那么堆栈最终将溢出


在无限循环场景中,其他可能中断的因素是资源有限的任何因素,因此磁盘空间和网络带宽通常是下两个因素(网络,因为事情通常超时)。

恢复光纤不会增加堆栈大小。如果您每次在恢复另一个光纤之前都递归到一个函数中,那么堆栈将增加直到溢出,就像无限递归通常所做的那样。

FWIW Ruby光纤有4k堆栈限制。最近有一些关于Github的讨论,关于Rails上的光纤:+1导致堆栈溢出的问题:)Infinte循环和无限递归调用是不同的。你不清楚这种区别。无限重设调用最终将导致堆栈溢出,但无限循环经常使用,没有任何问题,例如在GUI应用程序的主循环中。