[#tour-race] == race If multiple <> work in parallel, but we want to be notified if either completes, we shall use <>. [source,cpp] ---- cobalt::generator some_data_source(); cobalt::generator another_data_source(); cobalt::main co_main(int argc, char * argv[]) { auto g1 = some_data_source(); auto g2 = another_data_source(); int res1 = co_await g1; double res2 = co_await g2; printf("Result: %f", res1 * res2); while (g1 && g2) { switch(variant2::variant nx = co_await cobalt::race(g1, g2)) { case 0: res1 = variant2::get<0>(nx); break; case 1: res2 = variant2::get<1>(nx); break; } printf("New result: %f", res1 * res2); } co_return 0; } ---- NOTE: `race` in this context will not cause any data loss.