Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this...
Transcript of Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this...
![Page 1: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/1.jpg)
Actors—Towards Object Oriented
Modeling of Concurrent Systems
Kresten Krab Thorup, Trifork
![Page 2: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/2.jpg)
I’m no expert
I’m on a mission to figure outhow to “think concurrently”.
![Page 3: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/3.jpg)
What factors increase our Capacity for Complexity?
A. Our system’s ability to perform and scale as problem size grows.
B. Our ability to understand and reason about systemsas they grow big. I’m an
intuitive person...
![Page 4: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/4.jpg)
time
com
plex
ity
abili
typerformance / scaleability
understandability
object-orientedmodeling
concurrencymodeling?
dynamic virtual machines
multi-corehardware
![Page 5: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/5.jpg)
Explicit / Reactive
Implicit / Functional
Here we need to understand and
reason about parallelism
Here, we abstract the parallelism
away
Concurrency Landscape
![Page 6: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/6.jpg)
Concurrency LandscapeExplicit / Reactive
Implicit / Functional
Distributed Telephone SystemsTrading Systems
Erlang / CORBAMessage Middleware
Search Engine Indexing
Model Simulations, Weather Forecasts
Google/HadoopMap-Reduce
Data-Parallelism
Local GUI-applicationsControl Systems
Threads
Search Engine Indexing
Model Simulations, Weather Forecasts
Google/HadoopMap-Reduce
Data-Parallelism
![Page 7: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/7.jpg)
“Thinking Tools” of Object-Oriented Modeling
objects with identity, classes with specialization,
virtual methods,... and patterns.
![Page 8: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/8.jpg)
Object-Oriented Languages
Object-Oriented Thinking in non-OO
Languages
Conceptual Model for Object-Orientation
support emulate
But all of the objects
are concurrency ignorant.
![Page 9: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/9.jpg)
Concurrent Languages
Concurrent Thinking in non-
Concurrent Languages
Conceptual Model for Concurrency
support emulate
![Page 10: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/10.jpg)
Where is the Conceptual Model for
Concurrent (Object-Oriented) Programming?
![Page 11: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/11.jpg)
Concurrency Mechanisms
Runtime
Threads, Processes, Semaphores, Locks, Monitors, Condition Variables, Data-Parallelism
Formalisms
CSP, π-calculus, concurrent linear logic, ...
Patterns
But - These are
mechanisms and techniques, not a
conceptual model
![Page 12: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/12.jpg)
Actorshave the potential to provide
an OO conceptual model for concurrency
![Page 13: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/13.jpg)
Some Actor Systems
• C.E. Hewitt’s actor model [Hewitt, 1977]
• SAL (Simple Actor Language) [Agha, 1986]
• ABCL/1 [Yonezawa, 1986]
• Concurrent Smalltalk [Tokoro, 1986]
• Actra Smalltalk [Thomas, et.al., 1989]
• Erlang [Armstrong, 1988]
• Clojure [Hickey, 2008], Kilim, ...
![Page 14: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/14.jpg)
• Scala has a nice framework for programming with actors.
• Kilim, Jetlang, Actors Guild, and Actor Foundry, ... are frameworks for actor programming in Java.
• Axum is an actor language based on C#.
Some More Systems
![Page 15: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/15.jpg)
An actor model...
•Is a conceptual model for time/state management
•Is a conceptual model for computations and their concurrent execution
•Mechanisms for abstraction and composition
![Page 16: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/16.jpg)
shared immutable
values
Actor Essentials...
messagebehaviorGuard/
Queue
actorclient
state
![Page 17: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/17.jpg)
You know this...
UI eventbehaviorEvent
Queue
your programuser
state
![Page 18: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/18.jpg)
Gul Agha’s Actor Model
• In this model, an actor is...
• A mail queue (with identity), and
• A behavior, describing the state and what to do when a message arrives.
• In many ways, Erlang is similar to this model.
[Gul Agha, 1986]
If there is time, I can go through this, as it solves many of the “issues” discussed in previous slides.
![Page 19: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/19.jpg)
An actor’s behavior can
• Perform computation, if-then-else, ...
• Create new actors,
• Send messages to other actors
• Specify that the next message should be processed with a different behavior.
![Page 20: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/20.jpg)
Message processing
• Messages are processed asynchronously: “send” starts a new processing task.
• In Agha’s actor model, a message task can execute when either
1. The previous behavior completes, or
2. A replacement behavior is given.
which ever comes first.
![Page 21: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/21.jpg)
1 2 ... n
mail queue
Xn
n+1
Xn+1
become Xn+1
a = new Y
1
Y
2 ...
send c to a
c
new message!new
behavior
new actor
![Page 22: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/22.jpg)
Two things that introduce concurrency
• Message send, lets the receiving actor start processing concurrently.
• Become, lets the actor process the next message concurrently.
![Page 23: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/23.jpg)
A simple cell
behavior cell(value)[msg] ≡ if msg = 〈FETCH, client〉 then send value to client if msg = 〈STORE, value2〉 then become cell(value2)
x = new cell(0)send 〈STORE, 1〉 to x
![Page 24: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/24.jpg)
How we are Modeling Behavior
• Event Loops
• State Tables / State Machines
• Actor Languages
• E, Actra, Erlang
![Page 25: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/25.jpg)
Actor Languages
• Structure your program as many concurrent event loops.
• Messages between actors (events) are asynchroneous.
• This seems to introduce a lot of complexity; we cannot apply our linear thinking.
![Page 26: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/26.jpg)
Actor Languages
• You need to think of your program as a team collaboration
• Apply organization theory to program behavior
• Secretaries, Workers, Managers, Gate keepeers, Cleaners,
• Hierarchical / Agile, Kanban, ...
• Supply chain, warehousing,
![Page 27: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/27.jpg)
With N+1 on a Team you need to...
• Manage ordering of events (protocol)
• Manage shared resources (facilities)
• Throttle/Scale work load (workload)
• Hide implementation details
![Page 28: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/28.jpg)
Understanding Actors• To really understand actors,
I wrote a simple actor framework for Java.
• Each “actor” has an interface, and a behavior that implements that interface.
• The framework creates a proxy that implement the interface and dispatches via a thread pool...
Learning by Doing: Don't Dissect the Frog, Build It.
![Page 29: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/29.jpg)
Proxy LoggerBehavior
Logger ActorBehavior
client
Thread Pool
Java Actor Framework
«interface»
«class»
«abstract class»
![Page 30: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/30.jpg)
Java Actor Framework// the actor’s interfaceinterface Logger { void log(String val);}
// ... and it’s behaviorclass LoggerBehavior extends ActorBehavior<Logger> { void log(String val) { System.out.println(value); }}
// ... then use it like this... Logger logger = new LoggerBehavior().actor();logger.log(“Something happened”);
![Page 31: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/31.jpg)
Issues with this approachSharing. If an actor receives a reference to a shared object then multiple actors/threads may mutate that object concurrently.
Threads. If an actor blocks during it’s operation, it is holding a precious resource, namely a thread.
Concurrency. If the actor’s methods returns a value, then the client will block, or what?
![Page 32: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/32.jpg)
Async Reply (a.k.a. Future)
“Server”“Client”
Reply
send
![Page 33: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/33.jpg)
Asynchronous Reply
// the actor’s interfaceinterface Logger { Reply<String> getStatus();}
class LoggerBehavior extends ActorBehavior<Logger> { String getStatus() { return 〈Compute Status〉; }}
These two correspond
![Page 34: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/34.jpg)
Asynchronous Reply
// ... then use it like this... Logger logger = new LoggerBehavior().actor();
// get a “future” for the status responseReply<String> reply = logger.getStatus();
// try to get the responseString status = reply.get();
![Page 35: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/35.jpg)
Async Request
“Server”“Client”
Reply
send
Request
![Page 36: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/36.jpg)
Async Request/Reply
interface Reply<T>{ T get();}
interface Request<T> { void answer(T value);}
![Page 37: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/37.jpg)
Async Request/Reply
// the actor’s interfaceinterface Logger { Reply<String> getStatus();}
class LoggerBehavior extends ActorBehavior<Logger> { void getStatus(Request<String> req){ req.answer ( 〈Compute Status〉 ); ... continue computation ... }}
These two correspond
![Page 38: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/38.jpg)
• A generalized model for request/reply interactions, that enables deferring the decision of
• when (and how long) to wait for a reply
• when to answer a request
• “Feels” like the interactions we have with agents in the real world.
Async Request/Reply Pattern
“Server”“Client”
Reply
Request
![Page 39: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/39.jpg)
Async Request/Reply Pattern
Original actor languages provide “only” one-way asynchronous message send
• a good building block, but ...
• asynch request/reply provides a way to bridge the gap to our classic request/reply thinking.
“Server”“Client”
Reply
Request
![Page 40: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/40.jpg)
Async Request/Replyinterface Reply<T> extends Future<T>{ T get() throws Exception; void forwardTo(Request<T> sink);}
interface Request<T> { void answer(T value); void deny(Exception e)}
interface Filter<IN,OUT> extends Request<IN>, Reply<OUT> {}
![Page 41: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/41.jpg)
Variations
• Actor languages/frameworks provide different variations of the async request/reply
• Original Actor Model
• E Programming Language
• Erlang
• Actra (OTI’s concurrent smalltalk)
![Page 42: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/42.jpg)
Promises in E
// ... then use it like this... Logger logger = new LoggerBehavior().actor();
// get a “future” for the status responseReply<String> reply = async logger.getStatus();
// install “callback” for the async replyreply.when( fun(String s) { ... use s ... } );
// ... will run in “this thread” to avoid races/sharing.
![Page 43: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/43.jpg)
Async Send computation can continue after message send
Async Reply computation can continue after message reply
Message Queue
messages are queued or synchroneous
E YES NO YES
Actra NO YES NO
Erlang YES YES YES
![Page 44: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/44.jpg)
Sharing & Threads
An actor language should also provide isolation for actors, so that multiple actors don’t mutate each others / shared state.
Threads are evil - actor languages provide light-weight processes. Your thinking changes dramatically when threads are very cheap.
![Page 45: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/45.jpg)
Kilim Framework
Sharing: The Kilim framework rewrites and validates Java byte code to check this. Object references become null in the sender’s context.
Threads: Kilim rewrites the actor behavior to CPS (continuation passing style), permitting actors to “suspend” without holding a thread.
![Page 46: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/46.jpg)
Scala Actor Framework
Sharing: Scala makes it easy to write immutable classes/values, but there is no mechanism to guarantee avoiding sharing.
Threads: Scala provides for a model in which you avoid having threads for idle actors, but blocking operations have same issues as “my” framework.
![Page 47: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/47.jpg)
Anthropomorphic Style
• Computations are organized in personified roles
• Managers, Administrators, Workers, Couriers, and Notifiers…
• Each of these have well known pre-defined semantics which can be subclasses for specific
applications
• Servers(Managers) must be responsive, so delegate most of the work
• Spend most of their life in a “receive any” loop waiting for work
• Most computation done by Workers
W. Morven Gentleman, “Message Passing Between Sequential Processes: the Reply Primitive and the Administrator Concept”, Software Practice and Experience, Vol. 11, Pp. 435-466, 1981.
Bedarra Research Labs Ltd.
S1C2 W2
M1Messenger (Courier)
S2 W3
C3
C4
C1 W1BlockedWorkers
Clients
![Page 48: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/48.jpg)
S1C2 W2
M1
Messenger (Courier)
S2 W3
C3
C4
C1 W1
BlockedWorkers
Clients
![Page 49: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/49.jpg)
Worker
class Worker extends ActorBehavior {
Worker (Manager mgr) { this.manager = mgr; }
run() { while(true) { Work work = manager.getWork(); // blocks! perform ( work ) } }
}
![Page 50: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/50.jpg)
Manager
class Manager extends ActorBehavior {
Queue<Request<Work>> workers;
getWork (Request<Work> req) { // from worker workers.enqueue(req); }
handle(Question q, Request<Answer> req){ workers.dequeue().answer ( new Work(q, req) ); }
}
![Page 51: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/51.jpg)
Actor
Worker Server
CourierAdministrator
Dispatcher
ProprietorTransactorNotifier
Application Specific Actors
Actor TaxonomyGeneric Actors
• Worker: report to managers to perform computation
• Notifier: event handling Worker• Courier/Secretary: messenger Worker, used for
delegation and communication• Transactor: adds ACID properties to computation• Server: provides services – clocks, actor directory
…• Proprietor: manages resources, mitigates access• Administrator: manages worker pool• Dispatcher: provides asynchronous
Bedarra Research Labs Ltd.
![Page 52: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/52.jpg)
Protocol
• When you interact with an actor, it becomes apparent that you need some way to control (and talk about) the ordering of interactions.
• Java “interfaces” describe what you “may say”, but says nothing about what makes sense to say when.
• You want some kind of state machine abstraction to manage this
![Page 53: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/53.jpg)
Protocol Enforcement
• Erlang - receive uses pattern matching, so only certain messages are accepted. Message mismatch is an error in the receiving actor!
• ABCL/x - receive can look ahead in the message queue to match certain criteria.
• Some OO-style languages have “guards” that control which messages are applicable in the current state.
![Page 54: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/54.jpg)
Erlang Cell
fun cell(nil) -> receive {put, Value} -> cell(Value); end;
fun cell(Value) -> receive {take, Sender} -> Sender ! Value, cell(nil); end.
![Page 55: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/55.jpg)
Coordination
• Actors don’t easily provide for coordination or transaction-like behavior. ... all those asynchronous messages are rather slippy!
• In many cases, you have to write the coordination code explicitly, ... tricky!
• Many research projects have worked on this, e.g. [Frølund96, Callsen94, Varela01].
![Page 56: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/56.jpg)
Transactions & Actors
• Clojure has transactional cells built-in, otherwise known as “refs”.
• In Erlang and Actra, you would program these using a framework
• Actra - inherit “Transactor”
• Erlang - Use “tx_server”
![Page 57: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/57.jpg)
• An Actor Model needs to address
• Resources
• Sharing
• Asynchronous Messaging
• But also (patterns for) ...
• Composition,
• Abstraction, and
• Coordination.
![Page 58: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/58.jpg)
Encapsulation & CompositionI’m taking the Erlang full-day tutorial on Sunday, perhaps I’ll be enlightened here.
receptionist
environment
Actor B
Actor A
![Page 59: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/59.jpg)
Abstraction
• Some actor languages have reflection (ABCL/R* family), or higher-order actors (Erlang), i.e., actors that produce or consume actor behaviors. In Erlang, an actor behavior is simply a function.
• These mechanisms are very powerful for creating control structures, and meta-programming for actors.
![Page 60: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/60.jpg)
Actor Patterns
• Active Object, Pipes-and-Filters
• All of Gregor’s Integration Patterns [Messaging]
• Anthropomorphic Patterns
![Page 61: Towards Object Oriented Modeling of Concurrent Systems · Gul Agha’s Actor Model • In this model, an actor is... • A mail queue (with identity), and A behavior, describing the](https://reader030.fdocuments.in/reader030/viewer/2022040914/5e8a9ff63e5d3175493b2336/html5/thumbnails/61.jpg)
Thanks!