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/