6

「物事がどのように機能するか」を探求することに興味がある C# プログラマーとして、新しい非同期機能を機能させるプロセスについてもう少し理解することに興味があります。

非同期に関する Eric Lippert の優れた記事シリーズをフォローしました: Async ブログ投稿

「コンパイラがほとんどの作業を行っている」という事実を除いて、この機能の実装への言及を(高レベルで)どこにも見た覚えがありません。

この機能は厳密にはコンパイラの機能ですか? コンパイラは何らかの方法でコードを書き直しますか?それだけですか? または、これを実現するランタイムサポートのようなものは他にありますか?

4

1 に答える 1

20

いいえ、完全にコンパイラに含まれているわけではありません。INotifyCompletionこれは、などのいくつかの新しいインターフェイスと、などのフレームワーク実装サポートに依存していますAsyncTaskMethodBuilder。ただし、CLRの変更は必要ないと思います。

コンパイラは多くの作業を行い、ステートマシンを構築します。これは、ステートマシン内のそれらのタイプのいくつかを参照するだけです。ああ、そしてTask関連するタイプの多くは、主にパフォーマンス上の理由で大幅に変更されました。

最初はCTPに対して書かれた一連のブログ投稿がありますが、バニラ.NET4と自分で作成したいくつかのクラスのみを使用しています。これらは(時間の経過とともに状況が少し変化するため)本番環境の実装に対しては機能しませんが、舞台裏で何が起こっているのかについての一般的な印象を与えてくれます。

于 2013-03-11T21:46:56.143 に答える