Example17.11

17.11 アクター

第 3 章で電子オークションサービスのプログラム実装例をざっと見ました。そのサービスは、パターンマッチングを使ってメールボックス中のメッセージを調べて動く、高度なアクタープロセスに基づいています。アクターの洗練、最適化された実装は scala.actors パッケージに収められています。ここで、アクターライブラリの簡略化バージョンを見てみましょう。

次のコードは scala.actors パッケージの実装とは異なります。アクターの簡略バージョンをどのように実装できるか、の例として見てください。アクターが実際にどのように定義されているか、あるいは標準 Scala ライブラリにおける実装を記述するものではありません。後者については Scala APIドキュメントを参照してください。

簡略化されたアクターは、通信プリミティブがメールボックスのそれであるようなスレッドです。そのようなアクターは、MailBox クラスを備えた Java の標準 Threadクラスのミックスイン合成拡張として定義できます。 私たちは Thread クラスの run メソッドもオーバライドして、その act メソッドで定義されたアクター動作を実行させます。! メソッドは MailBox の send メソッドを呼び出すだけです。

 abstract class Actor extends Thread with MailBox {
   def act(): Unit
   override def run(): Unit = act()
   def !(msg: Any) = send(msg)
 }

名前:
コメント:

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2011年02月24日 09:17
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。