決定論的な軽量並行性をサポートする言語がいくつかあります-コルーチン。
- Lua-コルーチン
- スタックレスPython-タスクレット
- Ruby-ファイバー
- もっとたくさんあるはずです...しかし、現在私はあまり考えていません。
とにかく、私が知る限り、多くの分離されたスタックが必要なので、これらの言語がスタックの増加をどのように処理するかを知りたいと思います。これは、4KBのRubyファイバー(明らかに大きなオーバーヘッド)についての言及を読んだためです。彼らはこれをスタックオーバーフローを防ぐ機能として宣伝しています。しかし、なぜスタックが自動的に成長すると言っているのかわかりません。Cスタックに制限されていないVMがスタックの増加を処理できないことは意味がありませんが、内部についてよく知らないため、これを確認することはできません。
これらの種類のマイクロスレッドでのスタックの増加をどのように処理しますか?明示的/暗黙的な制限はありますか?それとも、明確かつ自動的に処理されますか?