従来の async/await .NET の非同期処理といえば、長いあいだ async/await が中心だった。見た目は同期コードに近く、複雑になりやすい非同期処理を素直に書ける。 この async/await は、内部では CPS(Continuation-Passing Style、継続渡しスタイル)変換によって実現されている。 まず async キーワードで、非同期メソッドであることをコンパイラに知らせる。ここが CPS 変換の起点になる。ただし、async/await の仕組みそのものに async が欠かせないわけではない。C# で async が必要なのは、メソッド内の await が単なる識別子ではなく、処理の中断位置を示すキーワードだとコンパイラに伝えるためだ。同じ async/await モデルを採用する C++ では、 async キーワードを必要としない。 awai

