NOTE: This presentation pre-dates the API changes in the 0.5.0 release. Now that we're fast approaching a 1.0 release, nothing in this presentation is likely to be accurate. Except for some of the abstract concepts. Maybe.
Please do NOT expect any of this code to work with the current version of the gem.
-- Jerry
This is a presentation on Ruby concurrency I've given at several conferences and meetups in the fall of 2013. Tags mark the version of the presentation used at each conference/meetup. All the source code examples in the latest version of the presentation use my Concurrent Ruby gem.
Here is the conference/meetup list thus far:
- "Advanced Concurrent Programming in Ruby" at RubyConf 2013, available for viewing on Confreaks
- "Advanced Multithreading in Ruby" at Cascadia Ruby 2013, available for viewing on Confreaks
- Cleveland Ruby Brigade meetup on 12/5/2013
- I'll be giving "Advanced Concurrent Programming in Ruby" at CodeMash 2014
Rumor has it that you can't write concurrent programs in Ruby. People once believed that the world was flat and we all know how that turned out. Between the native threads introduced in MRI 1.9 and the JVM threading available to JRuby, Ruby is now a valid platform for concurrent applications. What we've been missing--until now--are the advanced concurrency tools available to other languages like Clojure, Scala, Erlang, Java, and Go. In this session we'll talk about the specific challenges faced when writing concurrent applications; we'll explore modern concurrency techniques such as agents, futures, promises, actors, supervisors, and others. We'll use various open source tools to craft safe, reliable, and efficient concurrent code.
All of the source code shwon in the presentation is available in the code
folder of this repo.
It has all been tested in IRB running under MRI 2.0. It should work fine under MRI 1.9 and above
and both JRuby and Rubinius running in 1.9 mode. As always, YMMV.
All source code in the code
folder is Copyright © 2013 Jerry D'Antonio.
It is free software and may be redistributed under the terms of the MIT license.