私の不完全な理解は、Twisted、Stackless、Greenlet、Eventlet、Coroutines はすべて、非同期ネットワーク IO と、非常に軽量で切り替えが速いユーザーランド スレッドを利用するということです。しかし、それらの違いが何であるかはわかりません。
また、Erlang プロセスに非常に似ています。それらはほとんど同じものですか?
このトピックをより理解するのを手伝ってくれる人なら誰でも大歓迎です。
私の不完全な理解は、Twisted、Stackless、Greenlet、Eventlet、Coroutines はすべて、非同期ネットワーク IO と、非常に軽量で切り替えが速いユーザーランド スレッドを利用するということです。しかし、それらの違いが何であるかはわかりません。
また、Erlang プロセスに非常に似ています。それらはほとんど同じものですか?
このトピックをより理解するのを手伝ってくれる人なら誰でも大歓迎です。
まず第一に、ノンブロッキング I/O はグリーン スレッドやコルーチンと共通点はありませんが、それらのスケジュール方法に影響を与える可能性があります。
今:
Stackless と Greenlet を比較すると、ほとんど正しいです。欠けているものは次のとおりです。
スタックレス自体は何も追加しません。代わりに、Stackless の 5 年後に発明された Greenlet は、特定のものを削除します。代替インタープリターの代わりに拡張モジュールとしてビルドできるほどシンプルに書かれています。
これは本当に面白いです。Stackless にはさらに多くの機能があり、スイッチングの効率が約 10 倍高く、実行状態のピクルを提供します。
おそらく拡張モジュールとして使いやすいという理由だけで、Greenlet は依然として勝っています。そこで、ピクルスで Greenlet を拡張してプロセスを元に戻すことを考えています。多分それはまた絵を変えるでしょう:-)
エサ取り!(修正は大歓迎です!):
全体的に:
これらはいずれも、Erlang プロセスほど軽く、十分にサポートされていません。