Submit Search
Upload
Async DeepDive basics
•
1 like
•
391 views
Kouji Matsui
Follow
Async DeepDive Basics 2016.5.17 Tune's welcome (@its_out_of_tune)
Read less
Read more
Software
Report
Share
Report
Share
1 of 14
Download now
Download to read offline
Recommended
Thread affinity and CPS
Thread affinity and CPS
Kouji Matsui
async/awaitダークサイド is 何
async/awaitダークサイド is 何
Kouji Matsui
これからの「async/await」の話をしよう
これからの「async/await」の話をしよう
Kouji Matsui
Async deepdive before de:code
Async deepdive before de:code
Kouji Matsui
いまさら恥ずかしくてAsyncをawaitした
いまさら恥ずかしくてAsyncをawaitした
Kouji Matsui
continuatioN Linking
continuatioN Linking
Kouji Matsui
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
Kouji Matsui
async/await不要論
async/await不要論
bleis tift
Recommended
Thread affinity and CPS
Thread affinity and CPS
Kouji Matsui
async/awaitダークサイド is 何
async/awaitダークサイド is 何
Kouji Matsui
これからの「async/await」の話をしよう
これからの「async/await」の話をしよう
Kouji Matsui
Async deepdive before de:code
Async deepdive before de:code
Kouji Matsui
いまさら恥ずかしくてAsyncをawaitした
いまさら恥ずかしくてAsyncをawaitした
Kouji Matsui
continuatioN Linking
continuatioN Linking
Kouji Matsui
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
Kouji Matsui
async/await不要論
async/await不要論
bleis tift
SignalRブートキャンプ
SignalRブートキャンプ
Kouji Matsui
Bluetoothでgo!
Bluetoothでgo!
Kouji Matsui
真Intermediate languageのキホン
真Intermediate languageのキホン
Kouji Matsui
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Kohei Asai
最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介
Ryo Iinuma
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
Yahoo!デベロッパーネットワーク
Javascriptのあれやこれやをまとめて説明してみる
Javascriptのあれやこれやをまとめて説明してみる
Shunji Konishi
AngularJS2でつまづいたこと
AngularJS2でつまづいたこと
Takehiro Takahashi
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
y torazuka
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Koichi Sakata
Javaに這いよる.NET
Javaに這いよる.NET
Hiroshi Maekawa
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
Koichi Sakata
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
Ryunosuke SATO
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
Yamamoto Reki
モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目
大樹 小倉
Jvm言語とJava、切っても切れないその関係
Jvm言語とJava、切っても切れないその関係
yy yank
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
最速C# 7.x
最速C# 7.x
Yamamoto Reki
「マルチデバイスなDelphiで活かすWebアプリケーション」
「マルチデバイスなDelphiで活かすWebアプリケーション」
Embarcadero Technologies
Hashicorpツールズ
Hashicorpツールズ
Uchio Kondo
윈도우 서비스 등록 방법
윈도우 서비스 등록 방법
SeongWan Son
Documento para
Documento para
patricia_1999
More Related Content
What's hot
SignalRブートキャンプ
SignalRブートキャンプ
Kouji Matsui
Bluetoothでgo!
Bluetoothでgo!
Kouji Matsui
真Intermediate languageのキホン
真Intermediate languageのキホン
Kouji Matsui
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Kohei Asai
最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介
Ryo Iinuma
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
Yahoo!デベロッパーネットワーク
Javascriptのあれやこれやをまとめて説明してみる
Javascriptのあれやこれやをまとめて説明してみる
Shunji Konishi
AngularJS2でつまづいたこと
AngularJS2でつまづいたこと
Takehiro Takahashi
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
y torazuka
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Koichi Sakata
Javaに這いよる.NET
Javaに這いよる.NET
Hiroshi Maekawa
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
Koichi Sakata
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
Ryunosuke SATO
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
Yamamoto Reki
モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目
大樹 小倉
Jvm言語とJava、切っても切れないその関係
Jvm言語とJava、切っても切れないその関係
yy yank
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
最速C# 7.x
最速C# 7.x
Yamamoto Reki
「マルチデバイスなDelphiで活かすWebアプリケーション」
「マルチデバイスなDelphiで活かすWebアプリケーション」
Embarcadero Technologies
Hashicorpツールズ
Hashicorpツールズ
Uchio Kondo
What's hot
(20)
SignalRブートキャンプ
SignalRブートキャンプ
Bluetoothでgo!
Bluetoothでgo!
真Intermediate languageのキホン
真Intermediate languageのキホン
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
Javascriptのあれやこれやをまとめて説明してみる
Javascriptのあれやこれやをまとめて説明してみる
AngularJS2でつまづいたこと
AngularJS2でつまづいたこと
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Javaに這いよる.NET
Javaに這いよる.NET
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目
Jvm言語とJava、切っても切れないその関係
Jvm言語とJava、切っても切れないその関係
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
最速C# 7.x
最速C# 7.x
「マルチデバイスなDelphiで活かすWebアプリケーション」
「マルチデバイスなDelphiで活かすWebアプリケーション」
Hashicorpツールズ
Hashicorpツールズ
Viewers also liked
윈도우 서비스 등록 방법
윈도우 서비스 등록 방법
SeongWan Son
Documento para
Documento para
patricia_1999
Act1 suárez martín-daily-esperanza
Act1 suárez martín-daily-esperanza
Asunción Raigoza
Pulkit Sharma sales resume
Pulkit Sharma sales resume
pulkit sharma
C# delegate 사용법
C# delegate 사용법
SeongWan Son
Presentaciona[1]
Presentaciona[1]
Alejandro Bernal Rodriguez
Your Patients Are Online. Where Are You?
Your Patients Are Online. Where Are You?
Eva Blandino
Viewers also liked
(7)
윈도우 서비스 등록 방법
윈도우 서비스 등록 방법
Documento para
Documento para
Act1 suárez martín-daily-esperanza
Act1 suárez martín-daily-esperanza
Pulkit Sharma sales resume
Pulkit Sharma sales resume
C# delegate 사용법
C# delegate 사용법
Presentaciona[1]
Presentaciona[1]
Your Patients Are Online. Where Are You?
Your Patients Are Online. Where Are You?
Similar to Async DeepDive basics
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
Daisuke Ikeda
EmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べた
kyon mm
EC2クラスタインスタンス使ってみました!
EC2クラスタインスタンス使ってみました!
Eiji Sato
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
Yosuke Mizutani
技術紹介: S2E: Selective Symbolic Execution Engine
技術紹介: S2E: Selective Symbolic Execution Engine
Asuka Nakajima
2010 04クラウド技術講座
2010 04クラウド技術講座
sisawa
ななめ45°から見たJavaOne
ななめ45°から見たJavaOne
AdvancedTechNight
AKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみた
Hideaki Aoyagi
[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005
Microsoft Tech Summit 2017
テスト駆動で行うネットワーク自動化のすすめ
テスト駆動で行うネットワーク自動化のすすめ
kinunori
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
Webアプリ開発向け ゆるふわDocker使いが Cloud Naive開発に必要なetc.
Webアプリ開発向け ゆるふわDocker使いが Cloud Naive開発に必要なetc.
YASUKAZU NAGATOMI
ゆるかわPhp
ゆるかわPhp
Ryota Mochizuki
Scalable Node.js with Redis Store
Scalable Node.js with Redis Store
kamiyam .
Concourseで快適な自動化の旅
Concourseで快適な自動化の旅
Kazuto Kusama
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
Suguru Ito
2019年度 CaaS ワークショップ @ NTTコム
2019年度 CaaS ワークショップ @ NTTコム
TomoyaTakegoshi
20160429 JAWS-UG沖縄 Cloud on the BEACH 2016 AWS全サービス紹介
20160429 JAWS-UG沖縄 Cloud on the BEACH 2016 AWS全サービス紹介
Midori Ikegami
Project Loom - 限定継続と軽量スレッド -
Project Loom - 限定継続と軽量スレッド -
Yuichi Sakuraba
Similar to Async DeepDive basics
(20)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
EmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べた
EC2クラスタインスタンス使ってみました!
EC2クラスタインスタンス使ってみました!
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
技術紹介: S2E: Selective Symbolic Execution Engine
技術紹介: S2E: Selective Symbolic Execution Engine
2010 04クラウド技術講座
2010 04クラウド技術講座
ななめ45°から見たJavaOne
ななめ45°から見たJavaOne
AKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみた
[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005
テスト駆動で行うネットワーク自動化のすすめ
テスト駆動で行うネットワーク自動化のすすめ
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Webアプリ開発向け ゆるふわDocker使いが Cloud Naive開発に必要なetc.
Webアプリ開発向け ゆるふわDocker使いが Cloud Naive開発に必要なetc.
ゆるかわPhp
ゆるかわPhp
Scalable Node.js with Redis Store
Scalable Node.js with Redis Store
Concourseで快適な自動化の旅
Concourseで快適な自動化の旅
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
2019年度 CaaS ワークショップ @ NTTコム
2019年度 CaaS ワークショップ @ NTTコム
20160429 JAWS-UG沖縄 Cloud on the BEACH 2016 AWS全サービス紹介
20160429 JAWS-UG沖縄 Cloud on the BEACH 2016 AWS全サービス紹介
Project Loom - 限定継続と軽量スレッド -
Project Loom - 限定継続と軽量スレッド -
More from Kouji Matsui
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
Kouji Matsui
Making archive IL2C #6-55 dotnet600 2018
Making archive IL2C #6-55 dotnet600 2018
Kouji Matsui
Matrix signal controller and BrainPad overview
Matrix signal controller and BrainPad overview
Kouji Matsui
Fun with BrainPad
Fun with BrainPad
Kouji Matsui
What's Functional?
What's Functional?
Kouji Matsui
Pitfall for WioLTE
Pitfall for WioLTE
Kouji Matsui
How to make the calculator
How to make the calculator
Kouji Matsui
Write common, run anywhere
Write common, run anywhere
Kouji Matsui
Locality of Reference
Locality of Reference
Kouji Matsui
Nespのコード生成
Nespのコード生成
Kouji Matsui
C#でわかる こわくないMonad
C#でわかる こわくないMonad
Kouji Matsui
You will be assimilated. Resistance is futile.
You will be assimilated. Resistance is futile.
Kouji Matsui
How to meets Async and Task
How to meets Async and Task
Kouji Matsui
Beachhead implements new opcode on CLR JIT
Beachhead implements new opcode on CLR JIT
Kouji Matsui
Win32 APIをてなずけよう
Win32 APIをてなずけよう
Kouji Matsui
式の体を成して無い式を式の体を成すように式と式木で何とかする式
式の体を成して無い式を式の体を成すように式と式木で何とかする式
Kouji Matsui
不健康なIt戦士を健康的にするアレの話
不健康なIt戦士を健康的にするアレの話
Kouji Matsui
Final LINQ extensions III
Final LINQ extensions III
Kouji Matsui
SourceTreeで始めよう! Gitへの乗り換え指南
SourceTreeで始めよう! Gitへの乗り換え指南
Kouji Matsui
Final LINQ Extensions II
Final LINQ Extensions II
Kouji Matsui
More from Kouji Matsui
(20)
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
Making archive IL2C #6-55 dotnet600 2018
Making archive IL2C #6-55 dotnet600 2018
Matrix signal controller and BrainPad overview
Matrix signal controller and BrainPad overview
Fun with BrainPad
Fun with BrainPad
What's Functional?
What's Functional?
Pitfall for WioLTE
Pitfall for WioLTE
How to make the calculator
How to make the calculator
Write common, run anywhere
Write common, run anywhere
Locality of Reference
Locality of Reference
Nespのコード生成
Nespのコード生成
C#でわかる こわくないMonad
C#でわかる こわくないMonad
You will be assimilated. Resistance is futile.
You will be assimilated. Resistance is futile.
How to meets Async and Task
How to meets Async and Task
Beachhead implements new opcode on CLR JIT
Beachhead implements new opcode on CLR JIT
Win32 APIをてなずけよう
Win32 APIをてなずけよう
式の体を成して無い式を式の体を成すように式と式木で何とかする式
式の体を成して無い式を式の体を成すように式と式木で何とかする式
不健康なIt戦士を健康的にするアレの話
不健康なIt戦士を健康的にするアレの話
Final LINQ extensions III
Final LINQ extensions III
SourceTreeで始めよう! Gitへの乗り換え指南
SourceTreeで始めよう! Gitへの乗り換え指南
Final LINQ Extensions II
Final LINQ Extensions II
Async DeepDive basics
1.
Async DeepDive “Basics” 2016.05.17 TUNE’S WELCOME
KOUJI MATSUI (@KEKYO2)
2.
自己紹介 けきょ (@kekyo2, www.kekyo.net) ロードバイク乗り Microsoft
MVP for Visual Studio and Development Technology 認定スクラムマスター・スクラムプロダクトオーナー Center CLRオーガナイザー
3.
いつもの事だけど
4.
アジェンダ ・上から下までをやる 10分じゃ時間がアレなんだよー!! if ちゅーん |>
Async.知ってる then raise InvalidOperationException “詰んだ”
5.
こんな非同期処理のコード
6.
ワーカースレッドを使わない 高いパフォーマンス
7.
ユーザーモード User mode thread
context
8.
カーネルモード User mode thread
context
9.
デバイス応答 Interrupt handler context
10.
Come back Salmon どのプロセスに戻せばいいのか? どのスレッドに戻せばいいのか? DPC
context (Unknown thread)
11.
再びユーザーモード APC Execution
thread (Main/other) APC Queue CPS (Task.ContinueWith)
12.
実際には APC Queueではなく、カーネルイベントオブジェクトで通知し て、.NET ThreadPoolからI/O完了ポートを使ってワーカースレッドが割 り当てられて実行される この間、基本的にワーカースレッドは全て解放され、ハードウェア駆 動による処理だけが実行されている(→完全にハードウェアオフロー ドされている) だから完全に非同期処理でコードを実現すると、高パフォーマンスが 得られる。いかにワーカースレッドを「使わないか」が鍵。
13.
という事は: Task.Run() 使ったら負け Task.Wait(), Task.Result
使ったら負け Async.RunSyncronosly 使ったら負け
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
Download now