DP
Size: a a a
DP
ПК
await_suspend
или где-там надо я не помню, я вызову context.post(continuation_handler)
. continuation_handler это и будет код после co_await. Так я представляю себе как это работаетАК
co_await f();примерно эквивалентно
g();
...
f().then([&]{
g();
...
});
DP
DP
ПК
co_await f();примерно эквивалентно
g();
...
f().then([&]{
g();
...
});
DP
ПК
ПК
DP
АК
ПК
DP
co_await f();примерно эквивалентно
g();
...
f().then([&]{
g();
...
});
ПК
awaitable<void> do_some(int& param) {
foo();
co_await bar();
cout << param;
}
ПК
ПК
f().then([&]{
g();
...
});
ПК
DP
awaitable<void> do_some(int& param) {
foo();
co_await bar();
cout << param;
}
int i{};и даже при наличии N потоков i переживает do_some
co_await do_some(i);
DP
int i{};
auto v = std::async(..., &i);
v.wait();
ПК
int i{};и даже при наличии N потоков i переживает do_some
co_await do_some(i);
co_await do_some(get_some_object().get_some_reference_to_int());