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