Difference between revisions of "Actor Model"
From MohidWiki
Line 27: | Line 27: | ||
[[File:am.05.png|thumb|right|alt=Actor MW2 terminates time-step.|(2) Actor MW2 terminates time-step.]]Now actor MW2 has terminated time-step computations. It now sends 2 different messages to MW1 and MW3 respectively. MW2 is checking its message box's queue but it has not enough information to start a new time-step so it stays idle. | [[File:am.05.png|thumb|right|alt=Actor MW2 terminates time-step.|(2) Actor MW2 terminates time-step.]]Now actor MW2 has terminated time-step computations. It now sends 2 different messages to MW1 and MW3 respectively. MW2 is checking its message box's queue but it has not enough information to start a new time-step so it stays idle. | ||
− | MW1 | + | MW1 received a message form MW2 and will react accordingly. |
− | + | [[File:am.03.png|thumb|left|alt=Actor MW1 terminates time-step.|(3) Actor MW1 terminates time-step.]] | |
− | [[File:am.04.png|thumb|right|alt=All actors are working.|(4) All actors are working.]] | + | [[File:am.04.png|thumb|right|alt=All actors are working.|(4) All actors are working.]]All actors are computing a new timestep |
Revision as of 10:15, 23 January 2014
There are several resources in the Internet explaining the Actor Model and Reactive Programing. Some videos with interesting interviews:
- Hewitt, Meijer and Szyperski: The Actor Model (everything you wanted to know, but were afraid to ask)[1]; and
- Francesco Cesarini and Viktor Klang on the Reactive Manifesto[2].
To read on-line:
According to the Wikipedia[5] "the actor model in computer science is a mathematical model of concurrent computation that treats "actors" as the universal primitives of concurrent digital computation: in response to a message that it receives, an actor can make local decisions, create more actors, send more messages, and determine how to respond to the next message received" (changing state).
Actor Model in Mohikd
Suppose a domain is decomposed in 3 sub-domains according to the first image. Each sub-dmain is an actor that sends messages to other actors and reactes to messages it receives. Each model has a Main Loop that progresses in time-steps. Each model sends messages with information (for example border conditions) to actors that need it.
There is no need for a centralized controller, each actor has a state and reactes to the environment as a living organism. Inconsistencies or partial failures should be resolved in another layer, for instance with the help of supervisors (this is Erlang/OTP strategy).
MW3 will react when a message arrives to its mailbox. When it gathers enough information to strat a new time-step it will react triggering some computations. There is no central authority ordering it to start, stay idle, etc.
MW1 received a message form MW2 and will react accordingly.
All actors are computing a new timestep