質問
の俳優はとても軽量になり何?
私は、彼らがどのように動作するかさえわかりません。彼らはスレッドを分離していませんか?
解決
彼らは、各アクターがシングルスレッドにマップされていないことを意味します。
JVMが持つ共有メモリのスレッドを提供しています の主な形態としてロック 並行性の抽象化。しかし、共有 メモリのスレッドはかなりヘビー級です そして、、深刻なパフォーマンスの低下を招きます 文脈からオーバーヘッドを切り替えます。ために 基づいた俳優の実装 JVMスレッドとの1対1のマッピング、 Scalaの俳優あたりのプロセスのペイロード 私たちができることのような軽量ではありません 俳優の百万個のインスタンスを起動 具体的な計算のため。それゆえに Scalaのアクターはとして設計されています 取得軽量イベントオブジェクト、 スケジュールされたと上で実行 基本となるワーカースレッドプールという ときにすべて自動的にリサイズされます スレッドが長時間実行をブロック オペレーション。実際には、Scalaの実装 俳優の統合モデル - スレッド ベースとイベントベース。 Scalaの俳優 懸濁液の2つのフォームを提供 メカニズム - フルスタックフレーム 懸濁液(受信として実装)と 継続に基づくサスペンション クロージャ(反応として実施されます)。に イベントベースの俳優の場合は、上の待ちます 反応は継続で表されます 閉鎖、キャプチャすなわち閉鎖 俳優の計算の残りの部分。 ときに中断俳優が受け取ります のいずれかに一致するメッセージ 俳優で指定されたパターン、 継続がスケジューリングによって実行されます ワーカースレッドの1にタスク 基本的なスレッドプールから。ザ・ 紙で「俳優統一スレッドと ハラーとOdersky著によるイベント」 の詳細について説明します 実装ます。
ソースの