Computers are being built with more and more CPUs and those CPUs in turn have several cores. Powerful calculations are now performed either on many-cored machines, or on distributed systems. In this context, it's in the developer's interest to start thinking about concurrent programming. But concurrent programming is tricky - one has to deal with race conditions, locks, anything to do with shared state. The last few years have shown that very few developers get this right when faced with conventional shared state threads.
One of the ways to simplify concurrent programming is the actor model. In the actor model, programs are made of actors sending each other messages, and acting on the messages they receive. The actors don't share any state, and communicate purely by messages.
In this talk I explore several ways to implement the actor model in Ruby.
The existing actor implementations in Ruby:
Actor implementations that are a little more 'out there':
And their advantages and drawbacks, and (fun) code examples.
The talk will also allude to the fact that threads in Ruby should ideally have separate state, so that all programs using threads could also use the actor model (or other similar concurrency models).
Sign in to add slides, notes or videos to this session