Multithreading ============== Goals ----- * First and foremost: learn what a race condition is * Learn how to avoid race conditions * (Binary) semaphore, as done on most bare metal OSen * Mutex and its several Linux flavors (recursive, for example) * Learn how to *communicate* * Counting semaphore * Condition variable