Concepts dead lock Race Condition vs. Data Race data parallelism vs task parallelism Constructs coroutines: either fiber or stackless coroutines await syntax Patterns concurrency patterns structured concurrency Best Practices avoid blocking shared mutable data needs synchronization law of exclusivity Lock-Free Programming see: lock-free programming compare and swap ABA problem hazard pointer Related GPU Programming