タグ

awaitに関するSnowCaitのブックマーク (3)

  • async/awaitと同時実行制御

    C# 5.0のasync/awaitを使うと、多くの場面ではシングル スレッド的な動作になるし、多くの場面ではlock不要(結果的に、デッドロックが起こりようなくなる)になったりします。 ただし、「多くの場面で」。「必ず」ではないのがはまりどころ。いくつかの場面では、同時実行制御が必要です(普通にマルチスレッドの平行実行になるので、同時に同じデータにアクセスされる可能性を考慮しないとバグります)。 前提知識 いくつか、C# 5.0世代の非同期処理についての前提知識は、以下のスライド(先月末の.NETラボでの発表)を参考にしてください。 5~12ページ: async/awaitの書き方 17~22ページ: スレッドとそのコスト 24~26ページ: スレッド プール 29~32ページ: I/O完了待ちと非同期API 36~40ページ: UIスレッドとディスパッチャー 41~45ページ: 同期コ

    async/awaitと同時実行制御
  • async awaitを使ったテストの単体テスト - かずきのBlog@hatena

    Windows ストア アプリではasync awaitを使った非同期なメソッドを結構作ることになると思います。そんなメソッドの単体テストのやりかたの紹介です。 今回のテスト対象は、非同期にする意味が全くないですが足し算を行う以下のクラスです。 using System.Threading.Tasks; namespace App7 { public class Calc { public async Task<int> Add(int x, int y) { await Task.Delay(1000); return x + y; } } } 同じソリューションに単体テストライブラリのプロジェクトを作って、そこにApp7プロジェクトを参照設定してCalcクラスを使えるようにします。Express版には単体テストを作成するテンプレートが入ってないので、自分でせっせと以下のようなコードを書

    async awaitを使ったテストの単体テスト - かずきのBlog@hatena
  • Windows ストア アプリで重要な非同期プログラミング(C#)について復習 - かずきのBlog@hatena

    ここでは、C# 5.0で追加された非同期プログラミングのための構文について説明します。 非同期プログラミングの必要性 非同期プログラミングは、Windows ストア アプリでは重要な要素です。50ms以上かかる可能性のあるAPIのほとんどが非同期として提供されています。これは、時間のかかる処理を、同期的に呼び出した場合にアプリケーションの応答が、止まってしまうという問題を起こさないためです。時間のかかる処理を同期的に行った場合のイメージを以下に示します。 このような処理は、タブレットなどのタッチユーザーインターフェースではユーザーに非常にストレスになります。Windows ストア アプリでは避けるべき挙動になります。ここで、時間のかかる処理を非同期に行った場合のイメージを以下に示します。 このような処理を簡単に実装できるようにC#5.0から導入されたasync修飾子とawait演算子につい

    Windows ストア アプリで重要な非同期プログラミング(C#)について復習 - かずきのBlog@hatena
  • 1