Contenu connexe
Similaire à なんとなく理解するActor 〜Actorと仲良くしよう〜 @DMM.swift #1 (14)
なんとなく理解するActor 〜Actorと仲良くしよう〜 @DMM.swift #1
- 8. © DMM
Actorとは
You can use tasks to break up your program into isolated, concurrent
pieces. Tasks are isolated from each other, which is what makes it
safe for them to run at the same time, but sometimes you need to
share some information between tasks. Actors let you safely share
information between concurrent code. Like classes, actors are
reference types, so the comparison of value types and reference
types in Classes Are Reference Types applies to actors as well as
classes. Unlike classes, actors allow only one task to access their
mutable state at a time, which makes it safe for code in multiple tasks
to interact with the same instance of an actor.
8
- 11. © DMM
1. タスクについての記載
● タスクを使うとプログラムを独立していて同時に実行できるパーツに分
割できる
● タスクは分離されていて安全に同時実行できるが、場合によってはタス
ク間で情報を共有する必要がある
Actorとは
11
- 12. © DMM
2. Actorについての記載
● アクターを使用すると、安全にタスク間で情報を共有できる
● アクターはクラスと同様に参照型である
● アクターはクラスとは異なり、一度に 1 つのタスクのみが可変状態にア
クセスできる
Actorとは
12
- 18. © DMM
A universal modular ACTOR formalism for artificial intelligence
https://www.ijcai.org/Proceedings/73/Papers/027B.pdf
というpaperが初出らしい
プログラミングにおけるActorの初出は?
18
- 22. © DMM
このpaperの中にActorについての性質も記載されている
> 私たちの形式主義は、すべての動作モードが 1 種類の動作、つまり
ACTORにメッセージを送信するという観点からどのように定義できるかを示
しています。 ACTORは、再帰関数、データ構造、またはプロセスとして動作
するかどうかに関係なく、常にまったく同じ方法で均一に呼び出されます。
(中略)すべてのACTORには、メッセージが送信されるACTORの前提条件
とコンテキストが満たされていることを確認する INTENTION があります。
INTENTIONとは、ACTORが外の世界と結ぶ契約です。ACTORが契約をど
のように履行するかは、ACTOR自身の仕事です。
Actorの性質
22
- 24. © DMM
● 全てがActorで表現できる
○ Monotheism is the answer
○ データ構造、関数、セマフォなど多岐にわたる概念を包括している
● 統一された呼び出し方法
○ Actorは内部でどのように振る舞っていたとしても、同じ方法で一貫して呼び出し
される
● Intention(意図)
○ 外の世界とActorの間には契約があり、その契約に従ってActorは振る舞う
元々のActorとは
24
- 30. © DMM
● プログラムは単に機能するだけではだめ
● ちゃんと外から見たときに利用側の期待通りに振る舞ってくれるということ
が大切
● Actorはこちらの期待した役をきちんと演じてくれる役者さん
● データ競合がおきないように状態を扱って欲しいなぁの期待に応えてくれ
るのがActor
Actorに対するイメージ
30
- 36. © DMM
● 送信可能って日本語訳わかりにくいよね
● コピーすることで、ある非同期処理のドメインから別のドメインに渡せるも
の
● 単純な値型で構成されているstructとか、そういうコピーした後に書き込
みしても前のデータに影響しないものが該当する
● Sendableなデータはactor同士のやり取りで使える
Sendableって何?
36
- 52. © DMM
Audience Q&A Session
ⓘ
Click Present with Slido or install our Chrome extension to show live Q&A
while presenting.