Boost.ASIO coroutines. Event.
В этот раз реализую простейший примитив синхронизации двух короутин. Его назначение довольно просто: одна короутина приостанавливается на ожидании сигнала, другая этот сигнал отправляет. По сути это аналог пары std::future<void>/std::promise<void>. Короутины могут выполняться в разных потоках, ожидать сигнала может только одна короутина.