In this episode we take some already-good code and make it even better.
In this episode we finally discover why the Timeout module is unsafe, and a facility new in Ruby 2.0 that makes dealing with thread interruptions much less error-prone.
In today's episode, we'll simplify our thread-safe queue code by employing a "benign value" to represent the default max queue size.
We continue to evolve our thread-safe queue implementation. Today, we add the ability to set a bound on the queue size.
In this episode some bugs turn up in our thread-safe queue class.
Continuing to build our own thread-safe queue class, today we give it the ability to handle time out enqueues and dequeues.
As we continue to explore the fundamental building blocks of multithreaded programming, today we encounter the Condition Variable, and what it has to do with my local delicatessen.
In this episode we introduce the concept of a "critical section", and learn about one of the fundamental primitives that makes multithreaded programming possible.
Concurrent programming is hard, and one of the things that makes it so hard is that a thread can unexpectedly die without giving the programmer any indication. In this episode …