What are actors
Download
Report
Transcript What are actors
ACTORS
Motivation
Develop language for concurrency “Parallel
Execution of actions”.
Brief History
A number of individuals have contributed to the development of
the actor model.
Actor model was first described by Carl Hewitt (70’s)
– The model was object-oriented: every object was a
computationally active entity capable of receiving and
reacting to messages. The Objects were called Actors.
Gul Agha, later develop the actor model and develop a
mathematical theory of actors.
What are actors ?
Actors are independent concurrent objects that interact by
sending asynchronous messages; each actor has its mail
address and a behavior.
An actor can do the following:
Send communication to other actors.
Create new actors.
Define a new behavior for itself, which may be the same or
different to its previous behavior.
Behavior change
Higher level than state change (assignment)
The current behavior of an actor will specify its replacement
behavior
–
How it will perform the next incoming message
A behavior accepts only one message
A causally connected chain of behaviors isomorphic to the
queue of messages
Mail System
Two important facts about mail system in the actor
system:
Mail arrives in random, non deterministic order
(asynchronous).
Ensures concurrent execution.
The mail delivery is guaranteed.
The system guarantees to execute all tasks eventually.
Communication Mechanisms
Communication is asynchronous, without any guaranteed
arrival order.
– Message order: if actor A sends a sequence of
communications to actor B, then B may not receive them in
the same order that A sent them.
–
It is possible for A to tag each message with a sequence
number, so that B may rearrange messages into the correct
order.
Extending the Actalk framework
towards ACTORS
ActorBehavior subclass: #AghaActorBehavior
setProcess
[self acceptNextMessage] fork
replace: replacementBehavior
aself initializeBehavior: replacementBehavior
Example
AghaActorBehavior subclass: #AghaCounter
instanceVariables: ‘contents’
consultAndReplyTo: replyDestination
self replace: (self class contents: contents).
replyDestination reply: contents
incr
self replace: (self class contents: contents + 1)
reset
self replace: (self class contents: 0)
References
Agha, Gul, Actors: A Model of Concurrent
Computation in Distributed Systems. MIT
Press, 1986, 144 p.
Open Systems Laboratory
–
http://osl.cs.uiuc.edu/