SlideShare a Scribd company logo
1 of 45
Threads and
  Events in
Harmony with
  Celluloid
   Kyle Drake
Hi, I’m Kyle Drake. I
work at Geoloqi Esri.

We built a geofencing
           Text


and real-time location
 streaming platform.
Last year, IText a
              did
talk at KRTConf.
I was really into
pure event-driven
           Text
(reactor pattern
based) architecture.
EventMachine,
    Twisted,
    Node.js
• Event-driven
         Text


• No threads
• One CPU core
• Process Spawning
I released
sinatra-synchrony,
so I could use
          Text


EventMachine
without callbacks.
Since then, I’ve
         Text
changed my mind.
I’m really not a fan
of EventMachine
            Text


anymore.
EventMachine is
• A frankenstein - guts the ruby internals
• Not in active development
                         Text
• Makes non-blocking IO block
• Requires special code from Ruby libraries
• Hard to use in an OOP way
• Is really difficult to work with
• Poorly documented
Ruby developers
need to stop using
EventMachine. It’s
           Text


the wrong
direction.
Check this
benchmark
     Text


out:
Text




http://rhaas.blogspot.com/2012/04/did-i-say-32-cores-how-about-64.html
Predictions:
More Cores.
A lot more.
Predictions:
More libraries
      =
more memory
Will process
spawning work
   forever?

  It might.
It might not.

Thousands of
   cores?
Ruby MRI:
Global Interpreter Lock
   (single CPU core)

  Rubinius and JRuby:
    Full threading
 (multiple CPU cores)

~20KB per thread
We’re not finding
 a lot of thread
 safety issues in
      Ruby.
“Threading is
   hard”
Threading is
   not an
 intention!
Let’s fix it by
    abstracting
threads into how
  humans think!
http://celluloid.io
• Developed by Tony Arcieri
• Actor Pattern for Ruby
• Lots of inspiration from Erlang
Each actor is a
concurrent object
running in its own
      thread
First “Killer App”:

     Sidekiq
   Mike Perham
Don’t get me
wrong. Event-
driven is still
 awesome.
“..seasoned engineers are
using a mix of threaded,
event-based, and
alternative concurrency
approaches like Actors”

      - Alex Payne
What if we could
combine threads
  and reactor
 patterns.. and
    actors?!
https://github.com/celluloid/celluloid-io
• One reactor pattern per Celluloid object
• Multiple reactors? No problem!
• Doesn’t mess with code outside of actor
• Utilizes all CPU cores (using JRuby and Rubinius)
• Websockets, messaging systems, your hugely
successful blog
You don't have to
choose between
  threaded and
   evented IO!
Let’s get
distributed.
"I thought of objects being like
     biological cells and/or
   individual computers on a
     network, only able to
 communicate with messages"
           - Alan   Kay
Guess who was really
  into distributed
 network objects?
NeXT experimented
   with distributed
objects in the mid 90s.

NeXT was way ahead
   of its time.
"Objects can message objects transparently
that live on other machines over the network,
    and you don't have to worry about the
networking gunk, and you don't have to worry
  about finding them, and you don't have to
    worry about anything. It's just as if you
  messaged an object that's right next door."

                - Steve Jobs
“Portable Distributed Objects”
https://github.com/celluloid/dcell
 • Objects talk over networks!
 • Uses 0MQ
 • Aware of eachothers’ existence
 • Distributed gossip protocol
 • Web UI
 • In the early stages, very promising
CODE
EXAMPLES!
Help Us
Build This!
Thanks!
 @kyledrake
kyledrake.net

More Related Content

What's hot

JRuby: Pushing the Java Platform Further
JRuby: Pushing the Java Platform FurtherJRuby: Pushing the Java Platform Further
JRuby: Pushing the Java Platform FurtherCharles Nutter
 
自分をClojure化する方法
自分をClojure化する方法自分をClojure化する方法
自分をClojure化する方法fukamachi
 
How to start using Scala
How to start using ScalaHow to start using Scala
How to start using ScalaNgoc Dao
 
Culerity - Headless full stack testing for JavaScript
Culerity - Headless full stack testing for JavaScriptCulerity - Headless full stack testing for JavaScript
Culerity - Headless full stack testing for JavaScriptThilo Utke
 
Ruby in office time reboot
Ruby in office time rebootRuby in office time reboot
Ruby in office time rebootKentaro Goto
 
Clojure Conj 2014 - Paradigms of core.async - Julian Gamble
Clojure Conj 2014 - Paradigms of core.async - Julian GambleClojure Conj 2014 - Paradigms of core.async - Julian Gamble
Clojure Conj 2014 - Paradigms of core.async - Julian GambleJulian Gamble
 
Applying the paradigms of core.async in Clojure and ClojureScript
Applying the paradigms of core.async in Clojure and ClojureScriptApplying the paradigms of core.async in Clojure and ClojureScript
Applying the paradigms of core.async in Clojure and ClojureScriptJulian Gamble
 
Functional Programming in Clojure
Functional Programming in ClojureFunctional Programming in Clojure
Functional Programming in ClojureTroy Miles
 
My month with Ruby
My month with RubyMy month with Ruby
My month with Rubyalextomovski
 
Rubykaigi 2017-nishimotz-v6
Rubykaigi 2017-nishimotz-v6Rubykaigi 2017-nishimotz-v6
Rubykaigi 2017-nishimotz-v6Takuya Nishimoto
 
Actor model : A Different Concurrency Approach
Actor model : A Different Concurrency ApproachActor model : A Different Concurrency Approach
Actor model : A Different Concurrency ApproachEmre Akış
 
NodePDX Slides
NodePDX SlidesNodePDX Slides
NodePDX SlidesKyle Drake
 
Building GUI App with Electron and Lisp
Building GUI App with Electron and LispBuilding GUI App with Electron and Lisp
Building GUI App with Electron and Lispfukamachi
 
Kevin Whinnery: Write Better JavaScript
Kevin Whinnery: Write Better JavaScriptKevin Whinnery: Write Better JavaScript
Kevin Whinnery: Write Better JavaScriptAxway Appcelerator
 
Starting with Symfony2
Starting with Symfony2Starting with Symfony2
Starting with Symfony2Kevin Bond
 
Ruby projects of interest for DevOps
Ruby projects of interest for DevOpsRuby projects of interest for DevOps
Ruby projects of interest for DevOpsRicardo Sanchez
 
ProtoPie with Electron
ProtoPie with ElectronProtoPie with Electron
ProtoPie with ElectronScotty Kim
 

What's hot (20)

JRuby: Pushing the Java Platform Further
JRuby: Pushing the Java Platform FurtherJRuby: Pushing the Java Platform Further
JRuby: Pushing the Java Platform Further
 
自分をClojure化する方法
自分をClojure化する方法自分をClojure化する方法
自分をClojure化する方法
 
How to start using Scala
How to start using ScalaHow to start using Scala
How to start using Scala
 
Culerity - Headless full stack testing for JavaScript
Culerity - Headless full stack testing for JavaScriptCulerity - Headless full stack testing for JavaScript
Culerity - Headless full stack testing for JavaScript
 
Ruby in office time reboot
Ruby in office time rebootRuby in office time reboot
Ruby in office time reboot
 
About Clack
About ClackAbout Clack
About Clack
 
Lisp in the Cloud
Lisp in the CloudLisp in the Cloud
Lisp in the Cloud
 
Clojure Conj 2014 - Paradigms of core.async - Julian Gamble
Clojure Conj 2014 - Paradigms of core.async - Julian GambleClojure Conj 2014 - Paradigms of core.async - Julian Gamble
Clojure Conj 2014 - Paradigms of core.async - Julian Gamble
 
Applying the paradigms of core.async in Clojure and ClojureScript
Applying the paradigms of core.async in Clojure and ClojureScriptApplying the paradigms of core.async in Clojure and ClojureScript
Applying the paradigms of core.async in Clojure and ClojureScript
 
Functional Programming in Clojure
Functional Programming in ClojureFunctional Programming in Clojure
Functional Programming in Clojure
 
My month with Ruby
My month with RubyMy month with Ruby
My month with Ruby
 
Rubykaigi 2017-nishimotz-v6
Rubykaigi 2017-nishimotz-v6Rubykaigi 2017-nishimotz-v6
Rubykaigi 2017-nishimotz-v6
 
Actor model : A Different Concurrency Approach
Actor model : A Different Concurrency ApproachActor model : A Different Concurrency Approach
Actor model : A Different Concurrency Approach
 
How to-node-core
How to-node-coreHow to-node-core
How to-node-core
 
NodePDX Slides
NodePDX SlidesNodePDX Slides
NodePDX Slides
 
Building GUI App with Electron and Lisp
Building GUI App with Electron and LispBuilding GUI App with Electron and Lisp
Building GUI App with Electron and Lisp
 
Kevin Whinnery: Write Better JavaScript
Kevin Whinnery: Write Better JavaScriptKevin Whinnery: Write Better JavaScript
Kevin Whinnery: Write Better JavaScript
 
Starting with Symfony2
Starting with Symfony2Starting with Symfony2
Starting with Symfony2
 
Ruby projects of interest for DevOps
Ruby projects of interest for DevOpsRuby projects of interest for DevOps
Ruby projects of interest for DevOps
 
ProtoPie with Electron
ProtoPie with ElectronProtoPie with Electron
ProtoPie with Electron
 

Similar to Hybrid concurrency patterns

Un actor (model) per amico - Alessandro Melchiori - Codemotion Milan 2016
Un actor (model) per amico - Alessandro Melchiori - Codemotion Milan 2016Un actor (model) per amico - Alessandro Melchiori - Codemotion Milan 2016
Un actor (model) per amico - Alessandro Melchiori - Codemotion Milan 2016Codemotion
 
Seattlerb why jruby
Seattlerb why jrubySeattlerb why jruby
Seattlerb why jrubysnacktime
 
CSP: Huh? And Components
CSP: Huh? And ComponentsCSP: Huh? And Components
CSP: Huh? And ComponentsDaniel Fagnan
 
Software Architectures, Week 1 - Monolithic Architectures
Software Architectures, Week 1 - Monolithic ArchitecturesSoftware Architectures, Week 1 - Monolithic Architectures
Software Architectures, Week 1 - Monolithic ArchitecturesAngelos Kapsimanis
 
Improving Blockchain Developer Experience (DevX): Where UX meets Developer Tools
Improving Blockchain Developer Experience (DevX): Where UX meets Developer ToolsImproving Blockchain Developer Experience (DevX): Where UX meets Developer Tools
Improving Blockchain Developer Experience (DevX): Where UX meets Developer ToolsErik Trautman
 
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" EcosystemsPyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" EcosystemsUwe Korn
 
CSP: Huh? And Components
CSP: Huh? And ComponentsCSP: Huh? And Components
CSP: Huh? And ComponentsDaniel Fagnan
 
Ruby Concurrency Realities
Ruby Concurrency RealitiesRuby Concurrency Realities
Ruby Concurrency RealitiesMike Subelsky
 
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane EcosystemDownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane EcosystemFITC
 
Mobile Knife Fighting at JSConf US
Mobile Knife Fighting at JSConf US Mobile Knife Fighting at JSConf US
Mobile Knife Fighting at JSConf US Brian LeRoux
 
Concurrency patterns in Ruby
Concurrency patterns in RubyConcurrency patterns in Ruby
Concurrency patterns in RubyThoughtWorks
 
Concurrency patterns in Ruby
Concurrency patterns in RubyConcurrency patterns in Ruby
Concurrency patterns in RubyThoughtWorks
 
Java in High Frequency Trading
Java in High Frequency TradingJava in High Frequency Trading
Java in High Frequency TradingViktor Sovietov
 
Robotics, Search and AI with Solr, MyRobotLab, and Deeplearning4j
Robotics, Search and AI with Solr, MyRobotLab, and Deeplearning4jRobotics, Search and AI with Solr, MyRobotLab, and Deeplearning4j
Robotics, Search and AI with Solr, MyRobotLab, and Deeplearning4jKevin Watters
 
The Intersection of Robotics, Search and AI with Solr, MyRobotLab, and Deep L...
The Intersection of Robotics, Search and AI with Solr, MyRobotLab, and Deep L...The Intersection of Robotics, Search and AI with Solr, MyRobotLab, and Deep L...
The Intersection of Robotics, Search and AI with Solr, MyRobotLab, and Deep L...Lucidworks
 
Life Beyond Rails: Creating Cross Platform Ruby Apps
Life Beyond Rails: Creating Cross Platform Ruby AppsLife Beyond Rails: Creating Cross Platform Ruby Apps
Life Beyond Rails: Creating Cross Platform Ruby AppsTristan Gomez
 
Truly madly deeply parallel ruby applications
Truly madly deeply parallel ruby applicationsTruly madly deeply parallel ruby applications
Truly madly deeply parallel ruby applicationsHari Krishnan‎
 
What's Running My Containers? A review of runtimes and standards.
What's Running My Containers? A review of runtimes and standards.What's Running My Containers? A review of runtimes and standards.
What's Running My Containers? A review of runtimes and standards.Phil Estes
 

Similar to Hybrid concurrency patterns (20)

Un actor (model) per amico - Alessandro Melchiori - Codemotion Milan 2016
Un actor (model) per amico - Alessandro Melchiori - Codemotion Milan 2016Un actor (model) per amico - Alessandro Melchiori - Codemotion Milan 2016
Un actor (model) per amico - Alessandro Melchiori - Codemotion Milan 2016
 
Seattlerb why jruby
Seattlerb why jrubySeattlerb why jruby
Seattlerb why jruby
 
Why Play Framework is fast
Why Play Framework is fastWhy Play Framework is fast
Why Play Framework is fast
 
CSP: Huh? And Components
CSP: Huh? And ComponentsCSP: Huh? And Components
CSP: Huh? And Components
 
Software Architectures, Week 1 - Monolithic Architectures
Software Architectures, Week 1 - Monolithic ArchitecturesSoftware Architectures, Week 1 - Monolithic Architectures
Software Architectures, Week 1 - Monolithic Architectures
 
Improving Blockchain Developer Experience (DevX): Where UX meets Developer Tools
Improving Blockchain Developer Experience (DevX): Where UX meets Developer ToolsImproving Blockchain Developer Experience (DevX): Where UX meets Developer Tools
Improving Blockchain Developer Experience (DevX): Where UX meets Developer Tools
 
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" EcosystemsPyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
 
CSP: Huh? And Components
CSP: Huh? And ComponentsCSP: Huh? And Components
CSP: Huh? And Components
 
Ruby Concurrency Realities
Ruby Concurrency RealitiesRuby Concurrency Realities
Ruby Concurrency Realities
 
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane EcosystemDownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
 
Mobile Knife Fighting at JSConf US
Mobile Knife Fighting at JSConf US Mobile Knife Fighting at JSConf US
Mobile Knife Fighting at JSConf US
 
Concurrency patterns in Ruby
Concurrency patterns in RubyConcurrency patterns in Ruby
Concurrency patterns in Ruby
 
Concurrency patterns in Ruby
Concurrency patterns in RubyConcurrency patterns in Ruby
Concurrency patterns in Ruby
 
Ruby Concurrency
Ruby ConcurrencyRuby Concurrency
Ruby Concurrency
 
Java in High Frequency Trading
Java in High Frequency TradingJava in High Frequency Trading
Java in High Frequency Trading
 
Robotics, Search and AI with Solr, MyRobotLab, and Deeplearning4j
Robotics, Search and AI with Solr, MyRobotLab, and Deeplearning4jRobotics, Search and AI with Solr, MyRobotLab, and Deeplearning4j
Robotics, Search and AI with Solr, MyRobotLab, and Deeplearning4j
 
The Intersection of Robotics, Search and AI with Solr, MyRobotLab, and Deep L...
The Intersection of Robotics, Search and AI with Solr, MyRobotLab, and Deep L...The Intersection of Robotics, Search and AI with Solr, MyRobotLab, and Deep L...
The Intersection of Robotics, Search and AI with Solr, MyRobotLab, and Deep L...
 
Life Beyond Rails: Creating Cross Platform Ruby Apps
Life Beyond Rails: Creating Cross Platform Ruby AppsLife Beyond Rails: Creating Cross Platform Ruby Apps
Life Beyond Rails: Creating Cross Platform Ruby Apps
 
Truly madly deeply parallel ruby applications
Truly madly deeply parallel ruby applicationsTruly madly deeply parallel ruby applications
Truly madly deeply parallel ruby applications
 
What's Running My Containers? A review of runtimes and standards.
What's Running My Containers? A review of runtimes and standards.What's Running My Containers? A review of runtimes and standards.
What's Running My Containers? A review of runtimes and standards.
 

Recently uploaded

"My Silence, My Grave: The Making Of" Booklet
"My Silence, My Grave: The Making Of" Booklet"My Silence, My Grave: The Making Of" Booklet
"My Silence, My Grave: The Making Of" BookletDontLarry
 
Driving & Racing Games Online for Free_ Explore the Excitement with ATM HTML ...
Driving & Racing Games Online for Free_ Explore the Excitement with ATM HTML ...Driving & Racing Games Online for Free_ Explore the Excitement with ATM HTML ...
Driving & Racing Games Online for Free_ Explore the Excitement with ATM HTML ...ATM HTML Games
 
Pushpa 2 Release Date not Postponed According to the Makers.pdf
Pushpa 2 Release Date not Postponed According to the Makers.pdfPushpa 2 Release Date not Postponed According to the Makers.pdf
Pushpa 2 Release Date not Postponed According to the Makers.pdfkigaya33
 
一比一原版(UAL毕业证)伦敦艺术大学毕业证成绩单
一比一原版(UAL毕业证)伦敦艺术大学毕业证成绩单一比一原版(UAL毕业证)伦敦艺术大学毕业证成绩单
一比一原版(UAL毕业证)伦敦艺术大学毕业证成绩单utykdaq
 
Q4 WEEK 1 JUDGE THE RELEVANCE AND WORTH OF IDEAS.pptx
Q4 WEEK 1 JUDGE THE RELEVANCE AND WORTH OF IDEAS.pptxQ4 WEEK 1 JUDGE THE RELEVANCE AND WORTH OF IDEAS.pptx
Q4 WEEK 1 JUDGE THE RELEVANCE AND WORTH OF IDEAS.pptxramprakash8457
 
A KING’S HEART THE STORY OF TSAR BORIS III (Drama) (Feature Film Project in D...
A KING’S HEART THE STORY OF TSAR BORIS III (Drama) (Feature Film Project in D...A KING’S HEART THE STORY OF TSAR BORIS III (Drama) (Feature Film Project in D...
A KING’S HEART THE STORY OF TSAR BORIS III (Drama) (Feature Film Project in D...Art Feeling Films
 
一比一原版(OSU毕业证)俄亥俄州立大学哥伦布分校毕业证成绩单
一比一原版(OSU毕业证)俄亥俄州立大学哥伦布分校毕业证成绩单一比一原版(OSU毕业证)俄亥俄州立大学哥伦布分校毕业证成绩单
一比一原版(OSU毕业证)俄亥俄州立大学哥伦布分校毕业证成绩单utykdaq
 
Bromazolam CAS 71368-80-4 high quality opiates, Safe transportation, 99% pure
Bromazolam CAS 71368-80-4 high quality opiates, Safe transportation, 99% pureBromazolam CAS 71368-80-4 high quality opiates, Safe transportation, 99% pure
Bromazolam CAS 71368-80-4 high quality opiates, Safe transportation, 99% pureamy56318795
 
一比一原版(Westminster毕业证)威斯敏斯特大学毕业证成绩单
一比一原版(Westminster毕业证)威斯敏斯特大学毕业证成绩单一比一原版(Westminster毕业证)威斯敏斯特大学毕业证成绩单
一比一原版(Westminster毕业证)威斯敏斯特大学毕业证成绩单utykdaq
 
batwheels_01batwheels_01batwheels_01batwheels_01
batwheels_01batwheels_01batwheels_01batwheels_01batwheels_01batwheels_01batwheels_01batwheels_01
batwheels_01batwheels_01batwheels_01batwheels_01Patricia Pham
 
一比一原版(UCL毕业证)伦敦大学学院毕业证成绩单
一比一原版(UCL毕业证)伦敦大学学院毕业证成绩单一比一原版(UCL毕业证)伦敦大学学院毕业证成绩单
一比一原版(UCL毕业证)伦敦大学学院毕业证成绩单utykdaq
 
Water manjdjagement in problem soil.pptx
Water manjdjagement in problem soil.pptxWater manjdjagement in problem soil.pptx
Water manjdjagement in problem soil.pptxFaizanAhmad697379
 
plantillas-powerpoint-hello-kitty.pptx.n
plantillas-powerpoint-hello-kitty.pptx.nplantillas-powerpoint-hello-kitty.pptx.n
plantillas-powerpoint-hello-kitty.pptx.nMayu Eliz
 
Vector Methods.pptxjjjjjjjjjjjjjjjjjjjjjj
Vector Methods.pptxjjjjjjjjjjjjjjjjjjjjjjVector Methods.pptxjjjjjjjjjjjjjjjjjjjjjj
Vector Methods.pptxjjjjjjjjjjjjjjjjjjjjjjjoshuaclack73
 
PPT aviator (A small guide on spinmatch).pptx
PPT aviator (A small guide on spinmatch).pptxPPT aviator (A small guide on spinmatch).pptx
PPT aviator (A small guide on spinmatch).pptxspinmatch13
 
Get the Best Online Lotus ID from the Top Betting ID Provider.
Get the Best Online Lotus ID from the Top Betting ID Provider.Get the Best Online Lotus ID from the Top Betting ID Provider.
Get the Best Online Lotus ID from the Top Betting ID Provider.virat777exch786
 
一比一原版(SDSU毕业证)圣地亚哥州立大学毕业证成绩单
一比一原版(SDSU毕业证)圣地亚哥州立大学毕业证成绩单一比一原版(SDSU毕业证)圣地亚哥州立大学毕业证成绩单
一比一原版(SDSU毕业证)圣地亚哥州立大学毕业证成绩单utykdaq
 
Top Best IPTV Providers in the UK for 2024.pdf
Top Best IPTV Providers in the UK for 2024.pdfTop Best IPTV Providers in the UK for 2024.pdf
Top Best IPTV Providers in the UK for 2024.pdfXtreame HDTV
 

Recently uploaded (19)

"My Silence, My Grave: The Making Of" Booklet
"My Silence, My Grave: The Making Of" Booklet"My Silence, My Grave: The Making Of" Booklet
"My Silence, My Grave: The Making Of" Booklet
 
Driving & Racing Games Online for Free_ Explore the Excitement with ATM HTML ...
Driving & Racing Games Online for Free_ Explore the Excitement with ATM HTML ...Driving & Racing Games Online for Free_ Explore the Excitement with ATM HTML ...
Driving & Racing Games Online for Free_ Explore the Excitement with ATM HTML ...
 
Pushpa 2 Release Date not Postponed According to the Makers.pdf
Pushpa 2 Release Date not Postponed According to the Makers.pdfPushpa 2 Release Date not Postponed According to the Makers.pdf
Pushpa 2 Release Date not Postponed According to the Makers.pdf
 
一比一原版(UAL毕业证)伦敦艺术大学毕业证成绩单
一比一原版(UAL毕业证)伦敦艺术大学毕业证成绩单一比一原版(UAL毕业证)伦敦艺术大学毕业证成绩单
一比一原版(UAL毕业证)伦敦艺术大学毕业证成绩单
 
Q4 WEEK 1 JUDGE THE RELEVANCE AND WORTH OF IDEAS.pptx
Q4 WEEK 1 JUDGE THE RELEVANCE AND WORTH OF IDEAS.pptxQ4 WEEK 1 JUDGE THE RELEVANCE AND WORTH OF IDEAS.pptx
Q4 WEEK 1 JUDGE THE RELEVANCE AND WORTH OF IDEAS.pptx
 
kiff2
kiff2kiff2
kiff2
 
A KING’S HEART THE STORY OF TSAR BORIS III (Drama) (Feature Film Project in D...
A KING’S HEART THE STORY OF TSAR BORIS III (Drama) (Feature Film Project in D...A KING’S HEART THE STORY OF TSAR BORIS III (Drama) (Feature Film Project in D...
A KING’S HEART THE STORY OF TSAR BORIS III (Drama) (Feature Film Project in D...
 
一比一原版(OSU毕业证)俄亥俄州立大学哥伦布分校毕业证成绩单
一比一原版(OSU毕业证)俄亥俄州立大学哥伦布分校毕业证成绩单一比一原版(OSU毕业证)俄亥俄州立大学哥伦布分校毕业证成绩单
一比一原版(OSU毕业证)俄亥俄州立大学哥伦布分校毕业证成绩单
 
Bromazolam CAS 71368-80-4 high quality opiates, Safe transportation, 99% pure
Bromazolam CAS 71368-80-4 high quality opiates, Safe transportation, 99% pureBromazolam CAS 71368-80-4 high quality opiates, Safe transportation, 99% pure
Bromazolam CAS 71368-80-4 high quality opiates, Safe transportation, 99% pure
 
一比一原版(Westminster毕业证)威斯敏斯特大学毕业证成绩单
一比一原版(Westminster毕业证)威斯敏斯特大学毕业证成绩单一比一原版(Westminster毕业证)威斯敏斯特大学毕业证成绩单
一比一原版(Westminster毕业证)威斯敏斯特大学毕业证成绩单
 
batwheels_01batwheels_01batwheels_01batwheels_01
batwheels_01batwheels_01batwheels_01batwheels_01batwheels_01batwheels_01batwheels_01batwheels_01
batwheels_01batwheels_01batwheels_01batwheels_01
 
一比一原版(UCL毕业证)伦敦大学学院毕业证成绩单
一比一原版(UCL毕业证)伦敦大学学院毕业证成绩单一比一原版(UCL毕业证)伦敦大学学院毕业证成绩单
一比一原版(UCL毕业证)伦敦大学学院毕业证成绩单
 
Water manjdjagement in problem soil.pptx
Water manjdjagement in problem soil.pptxWater manjdjagement in problem soil.pptx
Water manjdjagement in problem soil.pptx
 
plantillas-powerpoint-hello-kitty.pptx.n
plantillas-powerpoint-hello-kitty.pptx.nplantillas-powerpoint-hello-kitty.pptx.n
plantillas-powerpoint-hello-kitty.pptx.n
 
Vector Methods.pptxjjjjjjjjjjjjjjjjjjjjjj
Vector Methods.pptxjjjjjjjjjjjjjjjjjjjjjjVector Methods.pptxjjjjjjjjjjjjjjjjjjjjjj
Vector Methods.pptxjjjjjjjjjjjjjjjjjjjjjj
 
PPT aviator (A small guide on spinmatch).pptx
PPT aviator (A small guide on spinmatch).pptxPPT aviator (A small guide on spinmatch).pptx
PPT aviator (A small guide on spinmatch).pptx
 
Get the Best Online Lotus ID from the Top Betting ID Provider.
Get the Best Online Lotus ID from the Top Betting ID Provider.Get the Best Online Lotus ID from the Top Betting ID Provider.
Get the Best Online Lotus ID from the Top Betting ID Provider.
 
一比一原版(SDSU毕业证)圣地亚哥州立大学毕业证成绩单
一比一原版(SDSU毕业证)圣地亚哥州立大学毕业证成绩单一比一原版(SDSU毕业证)圣地亚哥州立大学毕业证成绩单
一比一原版(SDSU毕业证)圣地亚哥州立大学毕业证成绩单
 
Top Best IPTV Providers in the UK for 2024.pdf
Top Best IPTV Providers in the UK for 2024.pdfTop Best IPTV Providers in the UK for 2024.pdf
Top Best IPTV Providers in the UK for 2024.pdf
 

Hybrid concurrency patterns

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n