Lecture 19: barriers, condition variables, futex and signals

We wrap up the discussion of synchronization and multi-threading with a brief treatment of barriers and condition variables, and their implementation in user space. Then, a discussion of signals.