Одно из предложений для С++ 14 - Возобновляемые функции, которое дает С++ то, что доступно на С# сегодня, с механизмами async/await. Основная идея заключается в том, что функция может быть приостановлена ожидая завершения асинхронной операции. Когда асинхронная операция завершается, функция может быть возобновлена там, где она была приостановлена. Это делается неблокирующим образом, так что поток, из которого была вызвана возобновляемая функция, не будет заблокирован.
Мне не очевидно, в каком контексте (потоке) функция будет возобновлена. Будет ли он возобновлен потоком, из которого функция была приостановлена (так это делается на С#, как я ее понимаю) или использует другой поток?
Если он возобновляется потоком, из которого он был приостановлен, должен ли поток быть помещен в какое-то особое состояние или будет ли этот планировщик обрабатывать?