BT

WinRTのasyncとawaitの先

| 作者: Jeff Martin フォローする 16 人のフォロワー , 翻訳者 尾崎 義尚 フォローする 0 人のフォロワー 投稿日 2012年5月21日. 推定読書時間: 1 分 |

原文(投稿日:2012/05/16)へのリンク

新しいWindows Runtime (WinRT)のゴールのひとつは、開発者によりよい非同期プログラミングの利用をサポートすることである。非同期操作は、(I/Oやネットワーク通信のような)他の操作が完了していなくても、プログラムが応答することができる。この応答性は、ユーザーがジェスチャーですぐに応答を期待しているタッチベースインターフェイスを含むほとんどのユーザーアプリケーションで有益である。

そのために、C#とVisual Basicプログラマが、彼らのプログラムのコントロールフローを複雑にすることなく非同期操作を可能にする“await/async”キーワードを使用することができる。非同期API呼び出しを行うプログラムフローは、呼び出したときの元の状態に応じて自動的に切り替えるようにコンパイラに任せることができる。MicrosoftのStephen Toub氏は先日、このプロセスがどのように動作するかを詳細に解説した。

コンパイラは、非同期とマークされたメソッドをステートマシンを使って内部的に書き換える。プログラマが“await”キーワードを使って宣言した場合コンパイラは、メソッドの実行をブロックしないようにサスペンドとレジュームが可能であることを知らせるマーカーを挿入することができる。

Toub氏によると:

非同期操作が完了せずに待ちに入ると、コンパイラが生成したコードが、ヒープに展開されているメソッドに関連づけられたすべての状態(たとえばローカル変数)をまとめて保存されます。その後、関数は呼び出し元に返り、他の処理が可能なようにスレッドをオンにします。待っていた非同期操作が完了すると、保存された状態を復元して、メソッドの実行が再開します。

Toub氏は、プログラマが“await”で提供されるものにさらなる管理性を求める状況に議論を移した。このケースでは、“AsTask”メソッドは、進捗状況の報告の提供か、複数の継続をサポートする必要があるのかもしれない。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT