C++14 の提案の 1 つは、現在 C# で async/await メカニズムを使用して利用できるものを C++ に提供する再開可能関数です。基本的な考え方は、非同期操作が完了するのを待っている間、関数を一時停止できるというものです。非同期操作が完了すると、関数は一時停止された場所から再開できます。これは、再開可能な関数が呼び出されたスレッドがブロックされないように、ノンブロッキングの方法で行われます。
関数がどのコンテキスト (スレッド) で再開されるかは、私には明らかではありません。関数が一時停止されたスレッドによって再開されますか (これは、私が理解しているように C# で行われる方法です)、それとも別のスレッドを使用しますか?
一時停止したスレッドによって再開された場合、スレッドを特別な状態にする必要がありますか、それともスケジューラがこれを処理しますか?