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

cluster_ec Graph cluster_ec_ec1 Embedded Computing 1 cluster_ec_ec1_mt Multithreading cluster_ec_ec1_cxx C++ ec_ec1_mt_exercise_mt_race_fixed EX: Avoiding Race Condition ec_ec1_mt_lock Avoiding Race Conditions: Semaphore/Mutex ec_ec1_mt_exercise_mt_race_fixed->ec_ec1_mt_lock ec_ec1_mt_exercise_mt_race EX: Race Conditions ec_ec1_mt_exercise_mt_race_fixed->ec_ec1_mt_exercise_mt_race ec_ec1_mt_lock->ec_ec1_mt_exercise_mt_race ec_ec1_mt_wait Communication: Waiting for Something ec_ec1_mt_wait->ec_ec1_mt_lock ec_ec1_cxx_build C++: Building with CMake ec_ec1_mt_exercise_mt_race->ec_ec1_cxx_build