Next: Actors in SALSA
Up: Actor-Oriented Programming
Previous: Actor-Oriented Programming
The Actor Model
Actors [1,3] provide a flexible model of concurrency for open distributed
systems. Actors can be used to model traditional functional, procedural, or object oriented systems. Actors are
independent, concurrent entities that communicate by exchanging messages asynchronously. Each actor encapsulates
a state and a thread of control that manipulates this state. In response to a message, an actor may perform one
of the following actions (see Figure 2.1):
- Alter its current state, possibly changing its future behavior.
- Send messages to other actors asynchronously.
- Create new actors with a specified behavior.
- Migrate to another computing host.
Figure 2.1:
Actors are reactive entities. In response to a message, an actor can (1) change its internal state,
(2) send messages to peer actors, (3) create new actors, and/or (4) migrate to another computing host.
|
Actors do not necessarily receive messages in the same order that they are sent. All the received messages are
initially buffered in the receiving actor's message box before being processed. Communication between actors is
weakly fair: an actor which is repeatedly ready to process messages from its mailbox will eventually process all
messages sent to it. An actor can interact with another actor only if it has a reference to it. Actor references
are first class entities. They can be passed in messages to allow for arbitrary actor communication topologies.
Because actors can create arbitrarily new actors, the model supports unbounded concurrency. Furthermore, because
actors only communicate through asynchronous message passing and because there is no shared memory, actor
systems are highly reconfigurable.
Next: Actors in SALSA
Up: Actor-Oriented Programming
Previous: Actor-Oriented Programming
Wei-Jen Wang
2007-11-14