私は、Scala と Akka アクター、およびその他の Scala 用の非 stdlib 同時実行パッケージを十分に認識しており、Geventに慣れてきました (これは、Python 用のグリーン スレッド + ノンブロッキング IO フレームワーク/ライブラリです。 NodeJS やあらゆる種類の Actor フレームワークなどと比較して価値があると思います) と、それを使用して並行コードを記述するのがいかに簡単であるかについて説明します。「実際の」スレッドを使用しているかのようにコードを記述しますが、実際の OS スレッドは使用されません。 Erlang プロセスのように何千ものプロセスがあり、すべての既存のコードは Just Works です — 私は現在、並行コードを実行するかなり制限された (そして「通常のコード」で構成するのがやや難しい) 方法をあまり好きではないと言わざるを得ません。 Akka スタイルのアクターを使用する場合は、記述する必要があります。
現在、Gevent が行っていることを行っているように見えるKilimがあります (ただし、ランタイム スタック操作ではなく CPS 変換を使用しています)。また、Scala は Java と完全に相互運用できることが知られています。しかし、この相互運用性は Kilim が動作するレベルまで完全に拡張されていますか? はいの場合、Scala と Kilim の組み合わせを実装する際に留意すべき重要事項は何ですか? グーグルでこれに関するいくつかのリソース(例:https://github.com/lllazu/kilim-scala )を見つけましたが、明確または実質的なものは何もありません。
注:次のような側面にも興味があります。
- なぜこれが最初に推奨されないアプローチなのか (つまり、Akka を使用する必要がある)。
- 私は間違っており、Akka スタイルのアクター コードは制限を行っていないか、(高レベルの) コード スタイルにかなりの影響を与えるほど十分に制限していません。