Understanding Semaphores in computer science by Allen Downey: http://t.co/oK9ddAQ7KO via @youtube
April 16, 2013
/http%3A%2F%2Fi3.ytimg.com%2Fvi%2FRaEUw107dpg%2Fhqdefault.jpg)
Software Synchronization Puzzles Multithreaded applications often require synchronization constraints; for example, we might require one thread to write a value before another thread tries to read it. A semaphore is a software building block that can be used to enforce arbitrarily complex constraints, but getting the details right can be challenging.

