C++20 Coroutines for Thread Sync: Why co_await Beats Condition Variables at Their Own Game

Eliminating Lost Wakeups and Spurious Wakeups with Coroutine-Based Synchronization