Successfully reported this slideshow.
Your SlideShare is downloading. ×

Async deepdive before de:code

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 14 Ad

Async deepdive before de:code

Download to read offline

Windows asyncronous I/O discovering in .NET through kernel mode.
Unconference before Microsoft Japan "de:code" 2016 conference.
http://connpass.com/event/29637/

Windows asyncronous I/O discovering in .NET through kernel mode.
Unconference before Microsoft Japan "de:code" 2016 conference.
http://connpass.com/event/29637/

Advertisement
Advertisement

More Related Content

Slideshows for you (20)

Similar to Async deepdive before de:code (20)

Advertisement

More from Kouji Matsui (19)

Recently uploaded (20)

Advertisement

Async deepdive before de:code

  1. 1. Async DeepDive before de:code 2016.05.23 DE:CODE前夜祭 KOUJI MATSUI (@KEKYO2)
  2. 2. 自己紹介 けきょ (@kekyo2, www.kekyo.net) ロードバイク乗り Microsoft MVP for Visual Studio and Development Technology 認定スクラムマスター・スクラムプロダクトオーナー Center CLRオーガナイザー C#, F#, IL, C++
  3. 3. アジェンダ なぜ非同期処理が必要なのか、上から下までをやります 細部はきりがないので、質問があれば随時受けます
  4. 4. こんな非同期処理のコード
  5. 5. 非同期処理の実現には、 ワーカースレッドを使うのか?
  6. 6. ワーカースレッドを使わない 高いパフォーマンス
  7. 7. ユーザーモード User mode thread context Event Object
  8. 8. カーネルモード User mode thread context
  9. 9. デバイス応答 Interrupt handler context
  10. 10. Come back Salmon どのプロセスに戻せばいいのか? どのスレッドに戻せばいいのか? DPC context (Unknown thread) Event Object I/O Completion port Thread pool
  11. 11. 再びユーザーモード I/O completion port Managed thread (Main/other) Thread pool CPS (Task.ContinueWith) Worker thhread context
  12. 12. I/O完了ポート ここに至るまでの間、基本的にワー カースレッドは全て解放され、ハー ドウェア駆動による処理だけが実行 されている(→完全にハードウェア オフロードされている) だから完全に非同期処理でコードを 実現すると、高パフォーマンスが得 られる。いかにワーカースレッドを 「使わないか」が鍵。 カーネルイベントオブジェクトでI/O処理の完了が通知され、.NET ThreadPoolからI/O完了ポートを使ってワーカースレッドが割り当てら れて実行される。
  13. 13. という事は: Task.Run() 使ったら負け Task.Wait(), Task.Result 使ったら負け Async.RunSyncronosly 使ったら負け
  14. 14. ご清聴ありがとうございました! スライドはブログに上げます ◦ http://www.kekyo.net/ Async訪ねて3000里 ◦ Async訪ねて3000里 (1): ユーザーモードのターン Async訪ねて3000里 (2): ファイルシステム・パーティションマネージャ・物理 ディスクデバイスドライバ Async訪ねて3000里 (3): ハードウェア割り込みとDPC Async訪ねて3000里 (4): I/Oの完了とAPC Async訪ねて3000里 (5): TaskCompletionSourceでTaskの継続へ Async訪ねて3000里 (6): I/O完了ポートによるワーカースレッドの運用 Asyncの基礎 ◦ これからの「async/await」の話をしよう http://www.slideshare.net/kekyo/asyncawait-41353786 ◦ async/awaitダークサイドis何 http://www.slideshare.net/kekyo/asyncawait-is

×