タグ

threadとufcppに関するshigiryouのブックマーク (2)

  • 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と同時実行制御
  • [雑記] スレッド プールとタスク(C# によるプログラミング入門)

    概要 Ver. 4.0 C# 3.0 で導入されたラムダ式と、 .NET 4 で導入された Task、Parallel、ParallelEnumerable などのクラスを使うことで、 非同期処理や並列処理が簡潔に記述できるようになりました。 また、C# 5.0 では非同期処理用の新構文が追加される予定です。 参考: 「非同期処理」 このページでは、これら非同期処理の基礎となる Task クラスや、その背後にあるスレッド プールというものについて説明していきます。 ポイント スレッドはそれなりに高コストなので使い回しをしたい → スレッド プール。 スレッド プールを使った非同期処理を行うには、.NET Framework 4 で導入された Task クラスが便利です。 スレッドを使った非同期処理を行いたい動機としては、以下の2つが挙げられます。 非ブロッキング処理: I/O 待ちとかで

    [雑記] スレッド プールとタスク(C# によるプログラミング入門)
  • 1