More Related Content Similar to GParsの?Actor Model
Similar to GParsの?Actor Model (20) GParsの?Actor Model2. 自己紹介
• 中山 / なかやん / ぺんぎん
• @pocketberserker / id:pocketberserker
• どこにでもいるふつーのぺんぎん
• F# / Haskell / Erlang / Scala / TDD
• FSharpx、Scalaz のこんとりびゅーた
• Groovy は…イベントでたまに使う?
15. Actor Model とは
• 並行計算モデルの一つ
• メッセージパッシングの一つ
• Actor = 計算実体(Computational Entity)
16. Actor Model とは
• 並行計算モデルの一つ
• メッセージパッシングの一つ
• Actor = 計算実体(Computational Entity)
• 哲学「全てのものは Actor である」
17. Actor Model とは
• 並行計算モデルの一つ
• メッセージパッシングの一つ
• Actor = 計算実体(Computational Entity)
• 哲学「全てのものは Actor である」
• 操作的意味論
22. Actor の振る舞い
• Actor に有限個のメッセージを送信
• 有限個の新たな Actor の生成
• メッセージを受信し、受信したメッセージに
応じた動作を行う
• 上記振る舞いを並列的に実行する
28. Actor である A 自身と A の隣人の集合
acquaintances*(A) =
{A} U acquaintances(A)
U acquaintances2(A) U ... (ad infinitum)
30. イベント E の表記
[T ˜˜ M]
• messenger(E) . . . 送る側のメッセージ
• terget(E) . . . E においてメッセージを受け取る
32. E1 と E2 の依存表記
El ++ E2
• E1 が発生したら E2 が活性化される
• 一般に半順序(要素が必ずしも比較可能では
ない)
• E が E1 . . . En を活性化することで fork(分岐)
を引き起こす可能性がある
34. 3 + 4 の例
[+ ˜˜ [request: [3 4], reply-to: c]]
+
+
V
[c ˜˜ [reply: 7]]
35. 一つめのイベント
[+ ˜˜ [request: [3 4], reply-to: c]]
• タプル [3 4] という引数
• “計算結果を c に送信すべき” という継続
• これらのメッセージを + に送信する
36. ふたつめのイベント
[c ˜˜ [reply: 7]]
• 計算結果 7 を返信データとして c に送信する
38. 階乗の例
[factorial ˜˜ [request: [3], reply-to: c]]
+
V
[loop (˜˜ [request: [3 1], reply-to: c]]
+
+
V
[ loop ˜˜ [request: [2 3], reply-to: c]]
+
+
V
[loop ˜˜ [request: [1 6], reply-to: c]]
+
+
V
[c ˜˜ [reply: 6]]
39. factorial 内の loop
• factorial は loop を呼び出す
• loop は [index product] という引数が必要
• index が 1 なら結果を返す継続を実行
• index が 1 以外なら [(index - 1) (index *
product)] を引数としたメッセージを loop に
送る
• index の初期値は factorial で受け取ったデー
タ(ここでは 3)
• product の初期値は 1
42. こんな感じで . . .
• 論文では公理的法則群が書かれている
• Arrival Orderings で到着順序の話とか
43. こんな感じで . . .
• 論文では公理的法則群が書かれている
• Arrival Orderings で到着順序の話とか
• ラムダ計算の記述例などが続く
44. こんな感じで . . .
• 論文では公理的法則群が書かれている
• Arrival Orderings で到着順序の話とか
• ラムダ計算の記述例などが続く
• が、長いのでここでは飛ばす
45. Actor の表現
[F ˜˜ [request: argument-tuple, reply-to: continuation]]
[continuation ˜˜ [reply: answer]]
[X ˜˜ [request: message, reply-to: C]]