SlideShare ist ein Scribd-Unternehmen logo
1 von 59
Downloaden Sie, um offline zu lesen
Just Keep Passing
               the Messages


                                 Dr Russel Winder

                                   It’z Interactive Ltd
                                   russel@itzinteractive.com
                                   @russel_winder
Copyright © 2011 Russel Winder                                 1
Just Keep Passing
               the Messages


                                 Dr Russel Winder

                                   Concertant LLP
                                   russel.winder@concertant.com
                                   @russel_winder
Copyright © 2011 Russel Winder                                    2
Just Keep Passing
               the Messages


                                 Dr Russel Winder

                                   Independent Consultant
                                   russel@russel.org.uk
                                   @russel_winder
Copyright © 2011 Russel Winder                              3
Just Keep Passing
               the Messages


                                 Prof Russel Winder

                                   Wolverhampton University
                                   russel@russel.org.uk
                                   @russel_winder
Copyright © 2011 Russel Winder                                4
Aims and Objectives

                       ●    Investigate why message passing architectures are the
                            software architectures of the future.
                       ●    Have some fun (whilst hopefully learning something).




Copyright © 2011 Russel Winder                                                      5
Audience Aims and Objectives




                                 ?
Copyright © 2011 Russel Winder                 6
Structure of the Session

                       ●    Introduction.
                       ●    Do stuff.
                       ●    Exit stage (left|right|front|back).




                                                  There may well be significant
                                                  dynamic binding of the session.

Copyright © 2011 Russel Winder                                                      7
Protocol

                       ●    Some slides, to kick things off.
                       ●    Some programs to really demonstrate things.


                       ●    NB Interaction between audience and presenter is
                            probably mandatory.

                                     We reserve the right to (shelve|stash) for
                                     later any interaction that appears to go
                                     on longer than seems appropriate.


                                                               NB This is a 50min session!
Copyright © 2011 Russel Winder                                                               8
Enter Manic Mode




Copyright © 2011 Russel Winder                      9
BEGIN

                       ●    History is important:
                                 –   To know today, we look to yesterday. To know tomorrow,
                                     we see today as yesterday.
                                                http://wiki.answers.com/Q/Why_history_is_important
                                 –




Copyright © 2011 Russel Winder                                                                       10
Processes / Threads   Processes / RPC




                                                Threads / Shared memory



                                            Processes / IPC


                                      Multi-tasking


                                 One program at a time.

Copyright © 2011 Russel Winder                                                        11
Historical Summary

                       ●    Shared-memory multi-threading for applications
                            programming is a total aberration:
                                 –   Consequences of operating systems handling of
                                     concurrency have been imposed on all programmers.
                       ●    Cooperating processes is where applications
                            development sanity is:
                                 –   Operating system interprocess communication was slow,
                                     hence threads, but this lead directly to the shared-memory,
                                     multi-threading quagmire.
                                 –   Erlang has shown that processes and message passing can do
                                     the job properly even after the “mainstream” had rejected
                                     process-based working.

Copyright © 2011 Russel Winder                                                                     12
Concurrency
                                      vs.
                                  Parallelism




Copyright © 2011 Russel Winder                  13
Concurrency

                       ●    Running multiple tasks using time-division
                            multiplexing on a single processor.




Copyright © 2011 Russel Winder                                           14
Parallelism

                       ●    Running multiple tasks concurrently.




                                    Note that the word concurrency here is the English
                                    meaning whereas the previous slide gave the
                                    computing jargon meaning of the word.




Copyright © 2011 Russel Winder                                                           15
Concurrency . . .

                       ●    . . . is a technique required for operating systems.
                       ●    . . . can sometimes be required for applications but
                            not as much as might be thought.


                       ●    Applications can use alternative models, for example
                            event-driven systems.
                                 –   Abstract over the control flow rather than manage it with
                                     locks, semaphores, monitors, etc.




Copyright © 2011 Russel Winder                                                                   16
Parallelism . . .

                       ●    . . . is about making an algorithm execute more
                            quickly in the presence of multiple processors.
                       ●    . . . is an architectural and design issue for
                            applications.




Copyright © 2011 Russel Winder                                                17
Concurrency

                       ●    The problem with threads is shared memory:
                                 –   Without writeable shared memory there is no need for
                                     synchronization.
                       ●    Why impose a 1960s, operating system driven view of
                            concurrency management on applications
                            programmers?




Copyright © 2011 Russel Winder                                                              18
Mutable Shared Memory is . . .

                       ●    . . . anathema to parallelism.
                       ●    . . . anathema to concurrency.
                       ●    . . . anathema to modern applications programming.
                       ●    . . . anathema.




Copyright © 2011 Russel Winder                                                   19
Solution . . .

                       ●    . . . do not use mutable shared memory.




                                            Note the caveat here that opens the door
                                            to using shared immutable data.


Copyright © 2011 Russel Winder                                                         20
Operating Systems . . .

                       ●    . . . are inherently a concurrency problem.
                       ●    Applications on the other hand are not, they
                            should be using higher level abstractions.




Copyright © 2011 Russel Winder                                             21
Object
                                 Orientation




Copyright © 2011 Russel Winder                 22
Original Model

                       ●    Object-based:
                                 –   A set of (small) closed namespaces, with methods,
                                     exchanging messages requesting services.
                       ●    Object-oriented:
                                 –   Object-based plus classes and inheritance




Copyright © 2011 Russel Winder                                                           23
Implementations

                       ●    Smalltalk realized the object-oriented model
                            correctly.
                       ●    C++ did not: message passing replaced by function
                            call.



                                   C++ destroyed correct appreciation of the
                                   object-oriented model of computation.




Copyright © 2011 Russel Winder                                                  24
Non-contentious (sort of) Syllogism

                       ●    Object-orientation is
                            about objects passing
                            messages to each other:
                            object-orientation is not
                            about function call in a    ●   C++ is not an object-
                            shared memory context.          oriented programming
                       ●    C++ is a programming            language.
                            language based on
                            function call in a shared
                            memory context: C++
                            does not have objects
                            passing messages to
                            each other.
Copyright © 2011 Russel Winder                                                      25
Java




Copyright © 2011 Russel Winder          26
Object-orientation

                       ●    Java follows C++:
                                 –   Function call replaces message passing.
                       ●    Java beats C++, had threads 15 years before C++.
                       ●    Shared memory multi-threading requires all the
                            locks, semaphores, monitors, etc. and Java has it all.




                                              Java is not an object-oriented language.


Copyright © 2011 Russel Winder                                                           27
Partial Solution for JVM

                       ●    Use java.util.concurrent:
                                 –   Provides many high-level tools.
                                 –   Has many low-level tools.


                                            If you are using the low-level tools then you are lost
                                            to the cause of quality application programming.



                                     Use jsr166y (Fork/Join) and extra166y (ParallelArray) in
                                     preference to using stuff in JDK6.


                                             JDK7 has Fork/Join but not ParallelArray, still have to
                                             use extra166y for this – sadly means using jsr166y.
Copyright © 2011 Russel Winder                                                                         28
Interesting Aside

                       ●    Paul King at SpringOne2GX 2011:


                             “Who used synchronized?”
                             Some in audience raise their hands.
                             “You did it wrong!”




Copyright © 2011 Russel Winder                                     29
High Performance
                                    Computing
                                       (HPC)

                                       aka

                                 Real Computing


Copyright © 2011 Russel Winder                      30
Parallelism Rules

                       ●    HPC has been doing parallelism for 40+ years.
                       ●    Combinations of architectures:
                                 –   Vector processors
                                 –   Multi-bus multiprocessors
                                 –   Clusters




Copyright © 2011 Russel Winder                                              31
HPC Extant Solution

                       ●    Message Passing Interface (MPI)




                                     MPI addresses the problem of SPMD or MIMD
                                     parallelism in the context of multiple, possibly
                                     multicore, systems.




Copyright © 2011 Russel Winder                                                          32
HPC Proposed Solution

                       ●    Partitioned Global Address Space (PGAS)
                       ●    Champions:
                                 –   Chapel
                                 –   X10
                                 –   Fortress


                                              Structure the global address space to allow for
                                              multiple processors sharing a single memory and/or
                                              to deal with distributed memory systems.




Copyright © 2011 Russel Winder                                                                     33
Return to a Better Way




Copyright © 2011 Russel Winder                  34
Exit Manic Mode




Copyright © 2011 Russel Winder                     35
Real Solutions?

                       ●    Actor Model
                       ●    Dataflow architectures
                       ●    CSP (Communicating Sequential Processes)


              Return to a process and message passing view of applications.

                      Nothing wrong with threads as a tool.
                      The problem is using shared memory.




Copyright © 2011 Russel Winder                                                36
Return to objects passing
                           messages to each other.


                 Return to being object-oriented.




Copyright © 2011 Russel Winder                         37
Actor Model

                       ●    A program is a collection of actors that send
                            messages to each other.
                       ●    An actor is a process with a “mailbox” for receiving
                            messages.
                       ●    A mailbox is a (thread-safe) queue of messages.




Copyright © 2011 Russel Winder                                                     38
Dataflow Model

                       ●    A program is a graph of operators with some data
                            sources and some data sinks.
                       ●    An operator is an event-triggered computation with
                            some inputs and some output.
                       ●    An operator triggers for a certain state of its inputs.




Copyright © 2011 Russel Winder                                                        39
CSP is . . .

                       ●    . . . mathematics:
                                 VMS = μX. ( in2p → (chocolate → X|out1p → toffee → X)
                                      | in1p → (toffee → X|in1p → (chocolate → X|in1p → STOPαX )))

                       ●    . . . but not scary since the mathematics can be
                            hidden in an API, so it just becomes a programming
                            tool.




Copyright © 2011 Russel Winder                                                                       40
CSP

                       ●    A program is a graph of processes running a
                            sequential computation that take input from input
                            channels and write output to output channels.
                       ●    Data exchange down a channel realizes a rendezvous.




Copyright © 2011 Russel Winder                                                    41
Commentary

                       ●    Actors are non-deterministic, with chaotic
                            communications and hence complex.
                       ●    Dataflow and CSP have much greater determinism
                            with fixed communications channels.




Copyright © 2011 Russel Winder                                               42
Implementations

                       ●    Actor Model:
                                 –   JVM: GPars, Scala, Akka, Fantom
                                 –   Native: C++/Just::Thread Pro, D
                                 –   Alternative: Erlang
                       ●    Dataflow Model:
                                 –   JVM: GPars, Pervasive DataRush
                                 –   Native: C++/Just::Thread Pro
                       ●    CSP:
                                 –   JVM: GPars, JCSP
                                 –   Native: C++CSP2

Copyright © 2011 Russel Winder                                         43
Acknowledgements




Copyright © 2011 Russel Winder     44
First Example Problem

                       ●    Something small, so the code is small.
                       ●    Something not too “toy”.
                       ●    Something with good parallelism.
                                 –   Embarrassingly parallel to allow checking of scaling.




Copyright © 2011 Russel Winder                                                               45

Copyright © 2011 Russel Winder       46
What is the Value of ?

                       ●    Easy, it's known exactly, it's  (obviously).


                                                                                          †
                                                                     It's simples



                                                                            †
                                                                                Aleksandr Orlov




Copyright © 2011 Russel Winder                                                                    47
Approximating 

                       ●    What is it's value represented as a floating point
                            number?
                                 –   We can only obtain an approximation.
                                 –   A plethora of possible algorithms to choose from, a popular
                                     one is to employ the following integral equation.

                                                       1  1
                                                      =∫0       dx
                                                    4     1x 2




Copyright © 2011 Russel Winder                                                                     48
One Possible Algorithm

                       ●    Use quadrature to estimate the value of the integral
                            – which is the area under the curve.
                                           4 n            1
                                         = ∑i=1
                                           n             i−0.5 2
                                                     1      
                                                            n


                                                                  With n = 3 not much
                                                                  to do, but potentially
                                                                  lots of error.
    Embarrassingly parallel.

Copyright © 2011 Russel Winder                                                             49
Major Minor Hardware Problem

                       ●    Multiple hyperthreads per core on multicore
                            processors can be a serious waste of time.




                                              Ed: Rant about chip manufacturers and
                                              operating systems elided to avoid persecution
                                              prosecution.
Copyright © 2011 Russel Winder                                                                50
Second Example Problem

                       ●    Sleeping Barber Problem
                                 –   A barber shop has a cutting chair and some waiting chairs.
                                     The barber sleeps in the cutting chair if there are no
                                     customers. If a customer enters, the customer checks the
                                     cutting chair and wakes the barber if the barber is asleep in
                                     the chair, sits in the chair and gets a hair cut. If the
                                     entering customer sees the cutting chair in use, the
                                     customer checks to see if there is a waiting chair free. If
                                     there is the customer sits and waits, otherwise the customer
                                     leaves dissatisfied. On finishing a customer cut, the
                                     customer leaves satisfied (we assume), and the barber
                                     checks for waiting customers. If there are any waiting
                                     customers, the customer moves to the cutting chair. If
                                     there are no waiting customers, the barber returns to
                                     sleeping in the cutting chair.
Copyright © 2011 Russel Winder                                                                       51
Sleeping Barber Problem . . .

                       ●    . . . is an interesting recasting of a process
                            synchronization problem in operating systems.
                       ●    . . . is due to Edsgar Dykstra



                                 http://en.wikipedia.org/wiki/Sleeping_barber_problem




Copyright © 2011 Russel Winder                                                          52
If the examples haven't been shown
                    yet, now is the time to show them!




Copyright © 2011 Russel Winder                           53
Summary

                       ●    Multiprocessor programming is now the norm – even
                            if you don't actually need it.
                       ●    Hardware is rapidly heading towards distributed
                            memory architectures, instead of shared memory
                            multi-threading.
                       ●    Shared memory multi-threading requires locks,
                            semaphores, monitors, etc. and programmers find it
                            hard to get that stuff right.
                       ●    Actor Model, Dataflow Model, and CSP are higher
                            level abstractions of managed control flow that are
                            easier for programmers to deal with.

Copyright © 2011 Russel Winder                                                    54
Summary of the Summary

                       ●    Shared-memory multi-threading is like
                            stacks, you know it's there, but you just
                            don't worry about it.




Copyright © 2011 Russel Winder                                          55
Summary of the Summary of the
                Summary
                       ●    If you think locks, semaphores, monitors, etc. are
                            important for your work, you are either working in
                            the concurrency frameworks business (*) OR you are
                            doing it wrong.


                     (*) Which includes operating systems.




Copyright © 2011 Russel Winder                                                   56
END

                     for ( person in roomContents.collect { x -> if ( x instanceof Human ) x } ) {
                        person << "Please leave peaceably."
                     }
                     println "Goodbye all."




Copyright © 2011 Russel Winder                                                                       57
Blatant Advertising

                       Python for Rookies
                       Sarah Mount, James Shuttleworth and
                       Russel Winder
                       Thomson Learning Now called Cengage Learning.


                                          Developing Java Software Third Edition
                                          Russel Winder and Graham Roberts
                                          Wiley




                                                          Buy these books!
Copyright © 2010 Russel Winder                                                     58
Just Keep Passing
               the Messages


                                 Dr Russel Winder

                                   It’z Interactive Ltd
                                   russel@itzinteractive.com
                                   @russel_winder
Copyright © 2011 Russel Winder                                 59

Weitere ähnliche Inhalte

Ähnlich wie Just Keep Passing The Messages

Just Keep Sending The Messages
Just Keep Sending The MessagesJust Keep Sending The Messages
Just Keep Sending The MessagesRussel Winder
 
ACCU 2012: Go, D, C++ and The Multicore Revolution
ACCU 2012:  Go, D, C++ and The Multicore RevolutionACCU 2012:  Go, D, C++ and The Multicore Revolution
ACCU 2012: Go, D, C++ and The Multicore RevolutionRussel Winder
 
It's all about processes communicating - Russel Winder
It's all about processes communicating - Russel WinderIt's all about processes communicating - Russel Winder
It's all about processes communicating - Russel WinderJAX London
 
It's All About Processes Communicating
It's All About Processes CommunicatingIt's All About Processes Communicating
It's All About Processes CommunicatingRussel Winder
 
Testing: Python, Java, Groovy, etc.
Testing: Python, Java, Groovy, etc.Testing: Python, Java, Groovy, etc.
Testing: Python, Java, Groovy, etc.Russel Winder
 
Cloud Disaster Recovery
Cloud Disaster Recovery Cloud Disaster Recovery
Cloud Disaster Recovery OpSource
 
Experience in Corporate Training in Virtual Worlds
Experience in Corporate Training in Virtual WorldsExperience in Corporate Training in Virtual Worlds
Experience in Corporate Training in Virtual WorldsAgile Dimensions LLC
 
GPars: Parallelism the Right Way
GPars: Parallelism the Right WayGPars: Parallelism the Right Way
GPars: Parallelism the Right WayRussel Winder
 
Project Controls Expo, 13th Nov 2013 - "A new visual way to engage executive ...
Project Controls Expo, 13th Nov 2013 - "A new visual way to engage executive ...Project Controls Expo, 13th Nov 2013 - "A new visual way to engage executive ...
Project Controls Expo, 13th Nov 2013 - "A new visual way to engage executive ...Project Controls Expo
 
Shoretel brilliantly simple_overview
Shoretel brilliantly simple_overviewShoretel brilliantly simple_overview
Shoretel brilliantly simple_overviewChuck Brown
 
Structured development in BMC Remedy AR System
Structured development in BMC Remedy AR SystemStructured development in BMC Remedy AR System
Structured development in BMC Remedy AR Systemgramlin42
 
What We are Learning About DNS Security: DNSSEC and Much More..
What We are Learning About DNS Security:  DNSSEC and Much More..What We are Learning About DNS Security:  DNSSEC and Much More..
What We are Learning About DNS Security: DNSSEC and Much More..Neustar, Inc.
 
A Cognitive Design for User Assistance 1: Users Become Learners
A Cognitive Design for User Assistance 1: Users Become LearnersA Cognitive Design for User Assistance 1: Users Become Learners
A Cognitive Design for User Assistance 1: Users Become LearnersThe Transformation Society
 
Behind the curtain secrets to mobile app wizardry - paul gelb razrofish sxsw
Behind the curtain   secrets to mobile app wizardry - paul gelb razrofish sxswBehind the curtain   secrets to mobile app wizardry - paul gelb razrofish sxsw
Behind the curtain secrets to mobile app wizardry - paul gelb razrofish sxswPaul Gelb
 
Why Groovy When Java 8 or Scala, or…
Why Groovy When Java 8 or Scala, or…Why Groovy When Java 8 or Scala, or…
Why Groovy When Java 8 or Scala, or…Russel Winder
 
Cloud Back Up and Disaster Recovery
Cloud Back Up and Disaster RecoveryCloud Back Up and Disaster Recovery
Cloud Back Up and Disaster RecoveryTerell Jones
 
Jenkins Enterprise by CloudBees Webinar
Jenkins Enterprise by CloudBees WebinarJenkins Enterprise by CloudBees Webinar
Jenkins Enterprise by CloudBees WebinarCloudBees
 
DDS in a Nutshell
DDS in a NutshellDDS in a Nutshell
DDS in a NutshellRick Warren
 

Ähnlich wie Just Keep Passing The Messages (20)

Just Keep Sending The Messages
Just Keep Sending The MessagesJust Keep Sending The Messages
Just Keep Sending The Messages
 
ACCU 2012: Go, D, C++ and The Multicore Revolution
ACCU 2012:  Go, D, C++ and The Multicore RevolutionACCU 2012:  Go, D, C++ and The Multicore Revolution
ACCU 2012: Go, D, C++ and The Multicore Revolution
 
It's all about processes communicating - Russel Winder
It's all about processes communicating - Russel WinderIt's all about processes communicating - Russel Winder
It's all about processes communicating - Russel Winder
 
It's All About Processes Communicating
It's All About Processes CommunicatingIt's All About Processes Communicating
It's All About Processes Communicating
 
Testing: Python, Java, Groovy, etc.
Testing: Python, Java, Groovy, etc.Testing: Python, Java, Groovy, etc.
Testing: Python, Java, Groovy, etc.
 
GPars Workshop
GPars WorkshopGPars Workshop
GPars Workshop
 
Cloud Disaster Recovery
Cloud Disaster Recovery Cloud Disaster Recovery
Cloud Disaster Recovery
 
Experience in Corporate Training in Virtual Worlds
Experience in Corporate Training in Virtual WorldsExperience in Corporate Training in Virtual Worlds
Experience in Corporate Training in Virtual Worlds
 
GPars: Parallelism the Right Way
GPars: Parallelism the Right WayGPars: Parallelism the Right Way
GPars: Parallelism the Right Way
 
Project Controls Expo, 13th Nov 2013 - "A new visual way to engage executive ...
Project Controls Expo, 13th Nov 2013 - "A new visual way to engage executive ...Project Controls Expo, 13th Nov 2013 - "A new visual way to engage executive ...
Project Controls Expo, 13th Nov 2013 - "A new visual way to engage executive ...
 
Shoretel brilliantly simple_overview
Shoretel brilliantly simple_overviewShoretel brilliantly simple_overview
Shoretel brilliantly simple_overview
 
Structured development in BMC Remedy AR System
Structured development in BMC Remedy AR SystemStructured development in BMC Remedy AR System
Structured development in BMC Remedy AR System
 
What We are Learning About DNS Security: DNSSEC and Much More..
What We are Learning About DNS Security:  DNSSEC and Much More..What We are Learning About DNS Security:  DNSSEC and Much More..
What We are Learning About DNS Security: DNSSEC and Much More..
 
A Cognitive Design for User Assistance 1: Users Become Learners
A Cognitive Design for User Assistance 1: Users Become LearnersA Cognitive Design for User Assistance 1: Users Become Learners
A Cognitive Design for User Assistance 1: Users Become Learners
 
Behind the curtain secrets to mobile app wizardry - paul gelb razrofish sxsw
Behind the curtain   secrets to mobile app wizardry - paul gelb razrofish sxswBehind the curtain   secrets to mobile app wizardry - paul gelb razrofish sxsw
Behind the curtain secrets to mobile app wizardry - paul gelb razrofish sxsw
 
Why Groovy When Java 8 or Scala, or…
Why Groovy When Java 8 or Scala, or…Why Groovy When Java 8 or Scala, or…
Why Groovy When Java 8 or Scala, or…
 
Cloud Back Up and Disaster Recovery
Cloud Back Up and Disaster RecoveryCloud Back Up and Disaster Recovery
Cloud Back Up and Disaster Recovery
 
Jenkins Enterprise by CloudBees Webinar
Jenkins Enterprise by CloudBees WebinarJenkins Enterprise by CloudBees Webinar
Jenkins Enterprise by CloudBees Webinar
 
Intersect
IntersectIntersect
Intersect
 
DDS in a Nutshell
DDS in a NutshellDDS in a Nutshell
DDS in a Nutshell
 

Mehr von Russel Winder

On Concurrency and Parallelism in the JVMverse
On Concurrency and Parallelism in the JVMverseOn Concurrency and Parallelism in the JVMverse
On Concurrency and Parallelism in the JVMverseRussel Winder
 
The Case for Kotlin and Ceylon
The Case for Kotlin and CeylonThe Case for Kotlin and Ceylon
The Case for Kotlin and CeylonRussel Winder
 
On the Architectures of Microservices: the next layer
On the Architectures of Microservices: the next layerOn the Architectures of Microservices: the next layer
On the Architectures of Microservices: the next layerRussel Winder
 
Fast Python? Don't Bother
Fast Python? Don't BotherFast Python? Don't Bother
Fast Python? Don't BotherRussel Winder
 
Making Python computations fast
Making Python computations fastMaking Python computations fast
Making Python computations fastRussel Winder
 
Tales from the Workshops
Tales from the WorkshopsTales from the Workshops
Tales from the WorkshopsRussel Winder
 
Making Computations Execute Very Quickly
Making Computations Execute Very QuicklyMaking Computations Execute Very Quickly
Making Computations Execute Very QuicklyRussel Winder
 
Java is Dead, Long Live Ceylon, Kotlin, etc
Java is Dead,  Long Live Ceylon, Kotlin, etcJava is Dead,  Long Live Ceylon, Kotlin, etc
Java is Dead, Long Live Ceylon, Kotlin, etcRussel Winder
 
Java is dead, long live Scala, Kotlin, Ceylon, etc.
Java is dead, long live Scala, Kotlin, Ceylon, etc.Java is dead, long live Scala, Kotlin, Ceylon, etc.
Java is dead, long live Scala, Kotlin, Ceylon, etc.Russel Winder
 
Spocktacular testing
Spocktacular testingSpocktacular testing
Spocktacular testingRussel Winder
 
Spocktacular Testing
Spocktacular TestingSpocktacular Testing
Spocktacular TestingRussel Winder
 
Is Groovy static or dynamic
Is Groovy static or dynamicIs Groovy static or dynamic
Is Groovy static or dynamicRussel Winder
 
Java is dead, long live Scala Kotlin Ceylon etc.
Java is dead, long live Scala Kotlin Ceylon etc.Java is dead, long live Scala Kotlin Ceylon etc.
Java is dead, long live Scala Kotlin Ceylon etc.Russel Winder
 
Dataflow: the concurrency/parallelism architecture you need
Dataflow: the concurrency/parallelism architecture you needDataflow: the concurrency/parallelism architecture you need
Dataflow: the concurrency/parallelism architecture you needRussel Winder
 
Are Go and D threats to Python
Are Go and D threats to PythonAre Go and D threats to Python
Are Go and D threats to PythonRussel Winder
 
Is Groovy as fast as Java
Is Groovy as fast as JavaIs Groovy as fast as Java
Is Groovy as fast as JavaRussel Winder
 
Who needs C++ when you have D and Go
Who needs C++ when you have D and GoWho needs C++ when you have D and Go
Who needs C++ when you have D and GoRussel Winder
 
Java 8: a New Beginning
Java 8: a New BeginningJava 8: a New Beginning
Java 8: a New BeginningRussel Winder
 

Mehr von Russel Winder (20)

On Concurrency and Parallelism in the JVMverse
On Concurrency and Parallelism in the JVMverseOn Concurrency and Parallelism in the JVMverse
On Concurrency and Parallelism in the JVMverse
 
The Case for Kotlin and Ceylon
The Case for Kotlin and CeylonThe Case for Kotlin and Ceylon
The Case for Kotlin and Ceylon
 
On the Architectures of Microservices: the next layer
On the Architectures of Microservices: the next layerOn the Architectures of Microservices: the next layer
On the Architectures of Microservices: the next layer
 
Fast Python? Don't Bother
Fast Python? Don't BotherFast Python? Don't Bother
Fast Python? Don't Bother
 
Making Python computations fast
Making Python computations fastMaking Python computations fast
Making Python computations fast
 
Tales from the Workshops
Tales from the WorkshopsTales from the Workshops
Tales from the Workshops
 
Making Computations Execute Very Quickly
Making Computations Execute Very QuicklyMaking Computations Execute Very Quickly
Making Computations Execute Very Quickly
 
Java is Dead, Long Live Ceylon, Kotlin, etc
Java is Dead,  Long Live Ceylon, Kotlin, etcJava is Dead,  Long Live Ceylon, Kotlin, etc
Java is Dead, Long Live Ceylon, Kotlin, etc
 
GPars Remoting
GPars RemotingGPars Remoting
GPars Remoting
 
Java is dead, long live Scala, Kotlin, Ceylon, etc.
Java is dead, long live Scala, Kotlin, Ceylon, etc.Java is dead, long live Scala, Kotlin, Ceylon, etc.
Java is dead, long live Scala, Kotlin, Ceylon, etc.
 
GPars 2014
GPars 2014GPars 2014
GPars 2014
 
Spocktacular testing
Spocktacular testingSpocktacular testing
Spocktacular testing
 
Spocktacular Testing
Spocktacular TestingSpocktacular Testing
Spocktacular Testing
 
Is Groovy static or dynamic
Is Groovy static or dynamicIs Groovy static or dynamic
Is Groovy static or dynamic
 
Java is dead, long live Scala Kotlin Ceylon etc.
Java is dead, long live Scala Kotlin Ceylon etc.Java is dead, long live Scala Kotlin Ceylon etc.
Java is dead, long live Scala Kotlin Ceylon etc.
 
Dataflow: the concurrency/parallelism architecture you need
Dataflow: the concurrency/parallelism architecture you needDataflow: the concurrency/parallelism architecture you need
Dataflow: the concurrency/parallelism architecture you need
 
Are Go and D threats to Python
Are Go and D threats to PythonAre Go and D threats to Python
Are Go and D threats to Python
 
Is Groovy as fast as Java
Is Groovy as fast as JavaIs Groovy as fast as Java
Is Groovy as fast as Java
 
Who needs C++ when you have D and Go
Who needs C++ when you have D and GoWho needs C++ when you have D and Go
Who needs C++ when you have D and Go
 
Java 8: a New Beginning
Java 8: a New BeginningJava 8: a New Beginning
Java 8: a New Beginning
 

Kürzlich hochgeladen

Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfOverkill Security
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Kürzlich hochgeladen (20)

Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Just Keep Passing The Messages

  • 1. Just Keep Passing the Messages Dr Russel Winder It’z Interactive Ltd russel@itzinteractive.com @russel_winder Copyright © 2011 Russel Winder 1
  • 2. Just Keep Passing the Messages Dr Russel Winder Concertant LLP russel.winder@concertant.com @russel_winder Copyright © 2011 Russel Winder 2
  • 3. Just Keep Passing the Messages Dr Russel Winder Independent Consultant russel@russel.org.uk @russel_winder Copyright © 2011 Russel Winder 3
  • 4. Just Keep Passing the Messages Prof Russel Winder Wolverhampton University russel@russel.org.uk @russel_winder Copyright © 2011 Russel Winder 4
  • 5. Aims and Objectives ● Investigate why message passing architectures are the software architectures of the future. ● Have some fun (whilst hopefully learning something). Copyright © 2011 Russel Winder 5
  • 6. Audience Aims and Objectives ? Copyright © 2011 Russel Winder 6
  • 7. Structure of the Session ● Introduction. ● Do stuff. ● Exit stage (left|right|front|back). There may well be significant dynamic binding of the session. Copyright © 2011 Russel Winder 7
  • 8. Protocol ● Some slides, to kick things off. ● Some programs to really demonstrate things. ● NB Interaction between audience and presenter is probably mandatory. We reserve the right to (shelve|stash) for later any interaction that appears to go on longer than seems appropriate. NB This is a 50min session! Copyright © 2011 Russel Winder 8
  • 9. Enter Manic Mode Copyright © 2011 Russel Winder 9
  • 10. BEGIN ● History is important: – To know today, we look to yesterday. To know tomorrow, we see today as yesterday. http://wiki.answers.com/Q/Why_history_is_important – Copyright © 2011 Russel Winder 10
  • 11. Processes / Threads Processes / RPC Threads / Shared memory Processes / IPC Multi-tasking One program at a time. Copyright © 2011 Russel Winder 11
  • 12. Historical Summary ● Shared-memory multi-threading for applications programming is a total aberration: – Consequences of operating systems handling of concurrency have been imposed on all programmers. ● Cooperating processes is where applications development sanity is: – Operating system interprocess communication was slow, hence threads, but this lead directly to the shared-memory, multi-threading quagmire. – Erlang has shown that processes and message passing can do the job properly even after the “mainstream” had rejected process-based working. Copyright © 2011 Russel Winder 12
  • 13. Concurrency vs. Parallelism Copyright © 2011 Russel Winder 13
  • 14. Concurrency ● Running multiple tasks using time-division multiplexing on a single processor. Copyright © 2011 Russel Winder 14
  • 15. Parallelism ● Running multiple tasks concurrently. Note that the word concurrency here is the English meaning whereas the previous slide gave the computing jargon meaning of the word. Copyright © 2011 Russel Winder 15
  • 16. Concurrency . . . ● . . . is a technique required for operating systems. ● . . . can sometimes be required for applications but not as much as might be thought. ● Applications can use alternative models, for example event-driven systems. – Abstract over the control flow rather than manage it with locks, semaphores, monitors, etc. Copyright © 2011 Russel Winder 16
  • 17. Parallelism . . . ● . . . is about making an algorithm execute more quickly in the presence of multiple processors. ● . . . is an architectural and design issue for applications. Copyright © 2011 Russel Winder 17
  • 18. Concurrency ● The problem with threads is shared memory: – Without writeable shared memory there is no need for synchronization. ● Why impose a 1960s, operating system driven view of concurrency management on applications programmers? Copyright © 2011 Russel Winder 18
  • 19. Mutable Shared Memory is . . . ● . . . anathema to parallelism. ● . . . anathema to concurrency. ● . . . anathema to modern applications programming. ● . . . anathema. Copyright © 2011 Russel Winder 19
  • 20. Solution . . . ● . . . do not use mutable shared memory. Note the caveat here that opens the door to using shared immutable data. Copyright © 2011 Russel Winder 20
  • 21. Operating Systems . . . ● . . . are inherently a concurrency problem. ● Applications on the other hand are not, they should be using higher level abstractions. Copyright © 2011 Russel Winder 21
  • 22. Object Orientation Copyright © 2011 Russel Winder 22
  • 23. Original Model ● Object-based: – A set of (small) closed namespaces, with methods, exchanging messages requesting services. ● Object-oriented: – Object-based plus classes and inheritance Copyright © 2011 Russel Winder 23
  • 24. Implementations ● Smalltalk realized the object-oriented model correctly. ● C++ did not: message passing replaced by function call. C++ destroyed correct appreciation of the object-oriented model of computation. Copyright © 2011 Russel Winder 24
  • 25. Non-contentious (sort of) Syllogism ● Object-orientation is about objects passing messages to each other: object-orientation is not about function call in a ● C++ is not an object- shared memory context. oriented programming ● C++ is a programming language. language based on function call in a shared memory context: C++ does not have objects passing messages to each other. Copyright © 2011 Russel Winder 25
  • 26. Java Copyright © 2011 Russel Winder 26
  • 27. Object-orientation ● Java follows C++: – Function call replaces message passing. ● Java beats C++, had threads 15 years before C++. ● Shared memory multi-threading requires all the locks, semaphores, monitors, etc. and Java has it all. Java is not an object-oriented language. Copyright © 2011 Russel Winder 27
  • 28. Partial Solution for JVM ● Use java.util.concurrent: – Provides many high-level tools. – Has many low-level tools. If you are using the low-level tools then you are lost to the cause of quality application programming. Use jsr166y (Fork/Join) and extra166y (ParallelArray) in preference to using stuff in JDK6. JDK7 has Fork/Join but not ParallelArray, still have to use extra166y for this – sadly means using jsr166y. Copyright © 2011 Russel Winder 28
  • 29. Interesting Aside ● Paul King at SpringOne2GX 2011: “Who used synchronized?” Some in audience raise their hands. “You did it wrong!” Copyright © 2011 Russel Winder 29
  • 30. High Performance Computing (HPC) aka Real Computing Copyright © 2011 Russel Winder 30
  • 31. Parallelism Rules ● HPC has been doing parallelism for 40+ years. ● Combinations of architectures: – Vector processors – Multi-bus multiprocessors – Clusters Copyright © 2011 Russel Winder 31
  • 32. HPC Extant Solution ● Message Passing Interface (MPI) MPI addresses the problem of SPMD or MIMD parallelism in the context of multiple, possibly multicore, systems. Copyright © 2011 Russel Winder 32
  • 33. HPC Proposed Solution ● Partitioned Global Address Space (PGAS) ● Champions: – Chapel – X10 – Fortress Structure the global address space to allow for multiple processors sharing a single memory and/or to deal with distributed memory systems. Copyright © 2011 Russel Winder 33
  • 34. Return to a Better Way Copyright © 2011 Russel Winder 34
  • 35. Exit Manic Mode Copyright © 2011 Russel Winder 35
  • 36. Real Solutions? ● Actor Model ● Dataflow architectures ● CSP (Communicating Sequential Processes) Return to a process and message passing view of applications. Nothing wrong with threads as a tool. The problem is using shared memory. Copyright © 2011 Russel Winder 36
  • 37. Return to objects passing messages to each other. Return to being object-oriented. Copyright © 2011 Russel Winder 37
  • 38. Actor Model ● A program is a collection of actors that send messages to each other. ● An actor is a process with a “mailbox” for receiving messages. ● A mailbox is a (thread-safe) queue of messages. Copyright © 2011 Russel Winder 38
  • 39. Dataflow Model ● A program is a graph of operators with some data sources and some data sinks. ● An operator is an event-triggered computation with some inputs and some output. ● An operator triggers for a certain state of its inputs. Copyright © 2011 Russel Winder 39
  • 40. CSP is . . . ● . . . mathematics: VMS = μX. ( in2p → (chocolate → X|out1p → toffee → X) | in1p → (toffee → X|in1p → (chocolate → X|in1p → STOPαX ))) ● . . . but not scary since the mathematics can be hidden in an API, so it just becomes a programming tool. Copyright © 2011 Russel Winder 40
  • 41. CSP ● A program is a graph of processes running a sequential computation that take input from input channels and write output to output channels. ● Data exchange down a channel realizes a rendezvous. Copyright © 2011 Russel Winder 41
  • 42. Commentary ● Actors are non-deterministic, with chaotic communications and hence complex. ● Dataflow and CSP have much greater determinism with fixed communications channels. Copyright © 2011 Russel Winder 42
  • 43. Implementations ● Actor Model: – JVM: GPars, Scala, Akka, Fantom – Native: C++/Just::Thread Pro, D – Alternative: Erlang ● Dataflow Model: – JVM: GPars, Pervasive DataRush – Native: C++/Just::Thread Pro ● CSP: – JVM: GPars, JCSP – Native: C++CSP2 Copyright © 2011 Russel Winder 43
  • 45. First Example Problem ● Something small, so the code is small. ● Something not too “toy”. ● Something with good parallelism. – Embarrassingly parallel to allow checking of scaling. Copyright © 2011 Russel Winder 45
  • 46.  Copyright © 2011 Russel Winder 46
  • 47. What is the Value of ? ● Easy, it's known exactly, it's  (obviously). † It's simples † Aleksandr Orlov Copyright © 2011 Russel Winder 47
  • 48. Approximating  ● What is it's value represented as a floating point number? – We can only obtain an approximation. – A plethora of possible algorithms to choose from, a popular one is to employ the following integral equation.  1 1 =∫0 dx 4 1x 2 Copyright © 2011 Russel Winder 48
  • 49. One Possible Algorithm ● Use quadrature to estimate the value of the integral – which is the area under the curve. 4 n 1 = ∑i=1 n i−0.5 2 1  n With n = 3 not much to do, but potentially lots of error. Embarrassingly parallel. Copyright © 2011 Russel Winder 49
  • 50. Major Minor Hardware Problem ● Multiple hyperthreads per core on multicore processors can be a serious waste of time. Ed: Rant about chip manufacturers and operating systems elided to avoid persecution prosecution. Copyright © 2011 Russel Winder 50
  • 51. Second Example Problem ● Sleeping Barber Problem – A barber shop has a cutting chair and some waiting chairs. The barber sleeps in the cutting chair if there are no customers. If a customer enters, the customer checks the cutting chair and wakes the barber if the barber is asleep in the chair, sits in the chair and gets a hair cut. If the entering customer sees the cutting chair in use, the customer checks to see if there is a waiting chair free. If there is the customer sits and waits, otherwise the customer leaves dissatisfied. On finishing a customer cut, the customer leaves satisfied (we assume), and the barber checks for waiting customers. If there are any waiting customers, the customer moves to the cutting chair. If there are no waiting customers, the barber returns to sleeping in the cutting chair. Copyright © 2011 Russel Winder 51
  • 52. Sleeping Barber Problem . . . ● . . . is an interesting recasting of a process synchronization problem in operating systems. ● . . . is due to Edsgar Dykstra http://en.wikipedia.org/wiki/Sleeping_barber_problem Copyright © 2011 Russel Winder 52
  • 53. If the examples haven't been shown yet, now is the time to show them! Copyright © 2011 Russel Winder 53
  • 54. Summary ● Multiprocessor programming is now the norm – even if you don't actually need it. ● Hardware is rapidly heading towards distributed memory architectures, instead of shared memory multi-threading. ● Shared memory multi-threading requires locks, semaphores, monitors, etc. and programmers find it hard to get that stuff right. ● Actor Model, Dataflow Model, and CSP are higher level abstractions of managed control flow that are easier for programmers to deal with. Copyright © 2011 Russel Winder 54
  • 55. Summary of the Summary ● Shared-memory multi-threading is like stacks, you know it's there, but you just don't worry about it. Copyright © 2011 Russel Winder 55
  • 56. Summary of the Summary of the Summary ● If you think locks, semaphores, monitors, etc. are important for your work, you are either working in the concurrency frameworks business (*) OR you are doing it wrong. (*) Which includes operating systems. Copyright © 2011 Russel Winder 56
  • 57. END for ( person in roomContents.collect { x -> if ( x instanceof Human ) x } ) { person << "Please leave peaceably." } println "Goodbye all." Copyright © 2011 Russel Winder 57
  • 58. Blatant Advertising Python for Rookies Sarah Mount, James Shuttleworth and Russel Winder Thomson Learning Now called Cengage Learning. Developing Java Software Third Edition Russel Winder and Graham Roberts Wiley Buy these books! Copyright © 2010 Russel Winder 58
  • 59. Just Keep Passing the Messages Dr Russel Winder It’z Interactive Ltd russel@itzinteractive.com @russel_winder Copyright © 2011 Russel Winder 59