Одним из предложений для C++14 является Resumable Functions. что дает C++ то, что доступно сегодня в C# с механизмами async/await. Основная идея заключается в том, что функцию можно приостановить, ожидая завершения асинхронной операции. Когда асинхронная операция завершается, функция может быть возобновлена с того места, где она была приостановлена. Это делается неблокирующим образом, чтобы поток, из которого была вызвана возобновляемая функция, не был заблокирован.
Для меня не очевидно, в каком контексте (потоке) функция будет возобновлена. Будет ли она возобновлена тем потоком, в котором функция была приостановлена (так это делается в C#, насколько я понимаю) или она использует другой поток?
Если он возобновляется потоком, в котором он был приостановлен, должен ли поток быть помещен в какое-то особое состояние или планировщик справится с этим?
std::optional
и получатель должен проверить, был ли доступен результат или нет. Похоже, вы уже можете писать такой код с текущей механикойstd::future
...? - person Kerrek SB   schedule 02.06.2013ConfigureAwait
, чтобы указать, какой Executor будет использоваться в будущем. - person Stephen Cleary   schedule 02.06.2013