Movatterモバイル変換
[0]
ホーム
URL:
画像なし
夜間モード
Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Gosuke Miyashita
PPTX, PDF
15,912 views
イベント駆動プログラミングとI/O多重化
2年ぐらい前の社内勉強会で使った資料。
Read more
62
Save
Share
Embed
Embed presentation
Download
Downloaded 94 times
1
/ 78
2
/ 78
3
/ 78
4
/ 78
5
/ 78
6
/ 78
7
/ 78
8
/ 78
9
/ 78
10
/ 78
11
/ 78
12
/ 78
13
/ 78
14
/ 78
15
/ 78
16
/ 78
17
/ 78
Most read
18
/ 78
19
/ 78
20
/ 78
21
/ 78
22
/ 78
23
/ 78
24
/ 78
25
/ 78
26
/ 78
27
/ 78
28
/ 78
29
/ 78
30
/ 78
31
/ 78
Most read
32
/ 78
33
/ 78
34
/ 78
35
/ 78
36
/ 78
37
/ 78
38
/ 78
39
/ 78
40
/ 78
41
/ 78
Most read
42
/ 78
43
/ 78
44
/ 78
45
/ 78
46
/ 78
47
/ 78
48
/ 78
49
/ 78
50
/ 78
51
/ 78
52
/ 78
53
/ 78
54
/ 78
55
/ 78
56
/ 78
57
/ 78
58
/ 78
59
/ 78
60
/ 78
61
/ 78
62
/ 78
63
/ 78
64
/ 78
65
/ 78
66
/ 78
67
/ 78
68
/ 78
69
/ 78
70
/ 78
71
/ 78
72
/ 78
73
/ 78
74
/ 78
75
/ 78
76
/ 78
77
/ 78
78
/ 78
Recommended
PDF
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
by
Yoshifumi Kawai
PPTX
Metaspace
by
Yasumasa Suenaga
PPTX
冬のLock free祭り safe
by
Kumazaki Hiroki
PDF
暗号技術の実装と数学
by
MITSUNARI Shigeo
PDF
できる!並列・並行プログラミング
by
Preferred Networks
PPT
Glibc malloc internal
by
Motohiro KOSAKI
PPTX
Redisの特徴と活用方法について
by
Yuji Otani
PDF
怖くないSpring Bootのオートコンフィグレーション
by
土岐 孝平
PDF
【Unite Tokyo 2019】Understanding C# Struct All Things
by
UnityTechnologiesJapan002
PDF
きつねさんでもわかるLlvm読書会 第2回
by
Tomoya Kawanishi
PDF
こわくない Git
by
Kota Saito
PDF
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
by
Atsushi KOMIYA
PDF
SAT/SMTソルバの仕組み
by
Masahiro Sakai
PDF
ネットワーク ゲームにおけるTCPとUDPの使い分け
by
モノビット エンジン
PDF
Paxos
by
Preferred Networks
PDF
例外設計における大罪
by
Takuto Wada
PDF
ゲーム開発者のための C++11/C++14
by
Ryo Suzuki
PDF
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
by
Hiro H.
PDF
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
PDF
C++ マルチスレッドプログラミング
by
Kohsuke Yuasa
PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
by
NTT DATA OSS Professional Services
PDF
Where狙いのキー、order by狙いのキー
by
yoku0825
PDF
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
by
NTT DATA Technology & Innovation
PPTX
DockerコンテナでGitを使う
by
Kazuhiro Suga
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
by
Masahito Zembutsu
PDF
オンラインゲームの仕組みと工夫
by
Yuta Imai
PPTX
分散システムについて語らせてくれ
by
Kumazaki Hiroki
PPTX
本当は恐ろしい分散システムの話
by
Kumazaki Hiroki
PDF
Node.js入門
by
俊夫 森
PDF
Kyoto Tycoon Guide in Japanese
by
Mikio Hirabayashi
More Related Content
PDF
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
by
Yoshifumi Kawai
PPTX
Metaspace
by
Yasumasa Suenaga
PPTX
冬のLock free祭り safe
by
Kumazaki Hiroki
PDF
暗号技術の実装と数学
by
MITSUNARI Shigeo
PDF
できる!並列・並行プログラミング
by
Preferred Networks
PPT
Glibc malloc internal
by
Motohiro KOSAKI
PPTX
Redisの特徴と活用方法について
by
Yuji Otani
PDF
怖くないSpring Bootのオートコンフィグレーション
by
土岐 孝平
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
by
Yoshifumi Kawai
Metaspace
by
Yasumasa Suenaga
冬のLock free祭り safe
by
Kumazaki Hiroki
暗号技術の実装と数学
by
MITSUNARI Shigeo
できる!並列・並行プログラミング
by
Preferred Networks
Glibc malloc internal
by
Motohiro KOSAKI
Redisの特徴と活用方法について
by
Yuji Otani
怖くないSpring Bootのオートコンフィグレーション
by
土岐 孝平
What's hot
PDF
【Unite Tokyo 2019】Understanding C# Struct All Things
by
UnityTechnologiesJapan002
PDF
きつねさんでもわかるLlvm読書会 第2回
by
Tomoya Kawanishi
PDF
こわくない Git
by
Kota Saito
PDF
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
by
Atsushi KOMIYA
PDF
SAT/SMTソルバの仕組み
by
Masahiro Sakai
PDF
ネットワーク ゲームにおけるTCPとUDPの使い分け
by
モノビット エンジン
PDF
Paxos
by
Preferred Networks
PDF
例外設計における大罪
by
Takuto Wada
PDF
ゲーム開発者のための C++11/C++14
by
Ryo Suzuki
PDF
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
by
Hiro H.
PDF
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
PDF
C++ マルチスレッドプログラミング
by
Kohsuke Yuasa
PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
by
NTT DATA OSS Professional Services
PDF
Where狙いのキー、order by狙いのキー
by
yoku0825
PDF
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
by
NTT DATA Technology & Innovation
PPTX
DockerコンテナでGitを使う
by
Kazuhiro Suga
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
by
Masahito Zembutsu
PDF
オンラインゲームの仕組みと工夫
by
Yuta Imai
PPTX
分散システムについて語らせてくれ
by
Kumazaki Hiroki
PPTX
本当は恐ろしい分散システムの話
by
Kumazaki Hiroki
【Unite Tokyo 2019】Understanding C# Struct All Things
by
UnityTechnologiesJapan002
きつねさんでもわかるLlvm読書会 第2回
by
Tomoya Kawanishi
こわくない Git
by
Kota Saito
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
by
Atsushi KOMIYA
SAT/SMTソルバの仕組み
by
Masahiro Sakai
ネットワーク ゲームにおけるTCPとUDPの使い分け
by
モノビット エンジン
Paxos
by
Preferred Networks
例外設計における大罪
by
Takuto Wada
ゲーム開発者のための C++11/C++14
by
Ryo Suzuki
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
by
Hiro H.
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
C++ マルチスレッドプログラミング
by
Kohsuke Yuasa
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
by
NTT DATA OSS Professional Services
Where狙いのキー、order by狙いのキー
by
yoku0825
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
by
NTT DATA Technology & Innovation
DockerコンテナでGitを使う
by
Kazuhiro Suga
コンテナの作り方「Dockerは裏方で何をしているのか?」
by
Masahito Zembutsu
オンラインゲームの仕組みと工夫
by
Yuta Imai
分散システムについて語らせてくれ
by
Kumazaki Hiroki
本当は恐ろしい分散システムの話
by
Kumazaki Hiroki
Similar to イベント駆動プログラミングとI/O多重化
PDF
Node.js入門
by
俊夫 森
PDF
Kyoto Tycoon Guide in Japanese
by
Mikio Hirabayashi
PPTX
Elixir入門「第2回:PC間で通信するアプリをサクっと書いてみる」
by
fukuoka.ex
PPTX
CQRS+ESをAkka Persistenceを使って実装してみる。
by
Matsushita Satoshi
PPTX
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
by
gree_tech
PDF
入門core.async
by
sohta
PDF
Em synchrony について
by
Tomoya Kawanishi
KEY
Perl 非同期プログラミング
by
lestrrat
PPTX
たのしいNode.js
by
ishiki-takai
PDF
[Basic 8] プロセスとスレッド / 入出力 / シェル
by
Yuto Takei
PPT
20060520.tcp
by
Ken SASAKI
PPTX
Async Programming on Ruby
by
Kazki Matsumoto
PPT
Node.js で Web アプリ開発
by
Tatsumi Naganuma
PPTX
Reactive Programming
by
maruyama097
PDF
Bossan dentoo
by
kubo39
PDF
18166746-NeverBlock-RubyKaigi2009
by
Muhammad Ali
PDF
Erlangやってみた
by
ina job
PPT
第2回 分散システム本読書会
by
Kenji Ohtsuka
PPT
V6prog OSC2013Hokkaido
by
Kohki Ohhira
PPTX
Elixir入門「第5回:Visualixirで見るマルチプロセス」
by
fukuoka.ex
Node.js入門
by
俊夫 森
Kyoto Tycoon Guide in Japanese
by
Mikio Hirabayashi
Elixir入門「第2回:PC間で通信するアプリをサクっと書いてみる」
by
fukuoka.ex
CQRS+ESをAkka Persistenceを使って実装してみる。
by
Matsushita Satoshi
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
by
gree_tech
入門core.async
by
sohta
Em synchrony について
by
Tomoya Kawanishi
Perl 非同期プログラミング
by
lestrrat
たのしいNode.js
by
ishiki-takai
[Basic 8] プロセスとスレッド / 入出力 / シェル
by
Yuto Takei
20060520.tcp
by
Ken SASAKI
Async Programming on Ruby
by
Kazki Matsumoto
Node.js で Web アプリ開発
by
Tatsumi Naganuma
Reactive Programming
by
maruyama097
Bossan dentoo
by
kubo39
18166746-NeverBlock-RubyKaigi2009
by
Muhammad Ali
Erlangやってみた
by
ina job
第2回 分散システム本読書会
by
Kenji Ohtsuka
V6prog OSC2013Hokkaido
by
Kohki Ohhira
Elixir入門「第5回:Visualixirで見るマルチプロセス」
by
fukuoka.ex
More from Gosuke Miyashita
PPTX
Serverspec at hbstudy #45
by
Gosuke Miyashita
PPTX
10分でわかるDevOps
by
Gosuke Miyashita
PPT
Danga::Socketの非同期処理の仕組みとPerlbalで非同期処理するプラグインを書く方法
by
Gosuke Miyashita
PPTX
Ia型超新星とチャンドラセカール限界
by
Gosuke Miyashita
PPTX
Open Source System Administration Framework - Func
by
Gosuke Miyashita
PPT
Assurer - a pluggable server testing/monitoring framework
by
Gosuke Miyashita
PPT
How Danga::Socket handles asynchronous processing and how to write asynchrono...
by
Gosuke Miyashita
PPTX
Inside Sqale's Backend at RubyConf Taiwan 2012
by
Gosuke Miyashita
PPTX
Maglica - A Simple Internal Cloud Tool at #techkayac
by
Gosuke Miyashita
PDF
Walter ファミリーの紹介 at Shibuya.go#1
by
Gosuke Miyashita
PPTX
Inside Sqale's Backend at YAPC::Asia Tokyo 2012
by
Gosuke Miyashita
PPTX
Puppetのススメ
by
Gosuke Miyashita
PPTX
Inside Sqale's Backend at Sapporo Ruby Kaigi 2012
by
Gosuke Miyashita
PPT
Puppet Best Practices? at COOKPAD
by
Gosuke Miyashita
PPTX
Serverspec at July Tech Festa 2013
by
Gosuke Miyashita
PPTX
DevOps とは何か 何であるべきか
by
Gosuke Miyashita
PPTX
How Perl Changed My Life
by
Gosuke Miyashita
PDF
Serverspec at Testing Framework Meeting
by
Gosuke Miyashita
PPTX
DevOpsって何?
by
Gosuke Miyashita
PPTX
NoSQLに関するまとめ
by
Gosuke Miyashita
Serverspec at hbstudy #45
by
Gosuke Miyashita
10分でわかるDevOps
by
Gosuke Miyashita
Danga::Socketの非同期処理の仕組みとPerlbalで非同期処理するプラグインを書く方法
by
Gosuke Miyashita
Ia型超新星とチャンドラセカール限界
by
Gosuke Miyashita
Open Source System Administration Framework - Func
by
Gosuke Miyashita
Assurer - a pluggable server testing/monitoring framework
by
Gosuke Miyashita
How Danga::Socket handles asynchronous processing and how to write asynchrono...
by
Gosuke Miyashita
Inside Sqale's Backend at RubyConf Taiwan 2012
by
Gosuke Miyashita
Maglica - A Simple Internal Cloud Tool at #techkayac
by
Gosuke Miyashita
Walter ファミリーの紹介 at Shibuya.go#1
by
Gosuke Miyashita
Inside Sqale's Backend at YAPC::Asia Tokyo 2012
by
Gosuke Miyashita
Puppetのススメ
by
Gosuke Miyashita
Inside Sqale's Backend at Sapporo Ruby Kaigi 2012
by
Gosuke Miyashita
Puppet Best Practices? at COOKPAD
by
Gosuke Miyashita
Serverspec at July Tech Festa 2013
by
Gosuke Miyashita
DevOps とは何か 何であるべきか
by
Gosuke Miyashita
How Perl Changed My Life
by
Gosuke Miyashita
Serverspec at Testing Framework Meeting
by
Gosuke Miyashita
DevOpsって何?
by
Gosuke Miyashita
NoSQLに関するまとめ
by
Gosuke Miyashita
イベント駆動プログラミングとI/O多重化
1.
イベント駆動プログラミン
グと I/O多重化
2.
イベント駆動プログラミング
3.
イベントを待機し、起こったイベントに従って処理を行うプログラミングパラダ
イム
4.
フロー駆動型プログラミングと呼ばれる従来のプログラミングパラダイムに対す
る概念
5.
GUIプログラミング
6.
キーやマウスの入力をイベントとして受け取って処理
7.
ネットワークプログラミ
ング
8.
ネットワークI/Oを多重化して1プロセス1スレッドで複数のネットワーク接続を同時に捌
く
9.
非イベント駆動なネットワークプログラミング
processClient or thread processClient or thread processClient or thread
10.
イベント駆動なネットワークプログラミングClient
processClient or threadClient
11.
今回はこっちがメイ
ン
12.
The C10K Problem
13.
イベント駆動型プログラミングの処理フ
ロー
14.
element.addEventListener(
’click’, function(){ console.log(‘hoge’) }, true);
15.
これってどう動いてる
の?
16.
イベントループ(メインループ)
17.
イベント登録イベント待ちイベント処理 後処理
18.
高レベルな言語ではイベントループを自分で 書く必要はない
19.
element.addEventListener(
’click’, function(){ console.log(‘hoge’) }, true);
20.
後で自分で書くとどうなるか解説します
21.
イベントの種類
22.
タイマー
23.
I/O
24.
シグナル
25.
子プロセス
26.
イベント登録イベント待ちイベント処理 後処理
27.
イベントループの話
おしまい
28.
I/O多重化
29.
ネットワークプログラミングにおけるイベント駆
動の要
30.
これなくして1プロセス1スレッドで複数のネットワーク接続を同時捌くことはで
きない
31.
なぜ1プロセス1スレッドで捌く必要があるの
か?
32.
The C10K Problem
でググれ
33.
I/O多重化の仕組み
34.
I/Oイベント登
録I/Oイベント待 ちI/Oイベント処 理 後処理
35.
非同期echoサーバを題材にサンプルコードで見
る
36.
多重化してない例
37.
int sock =
socket(PF_INET, SOCK_STREAM);bind(sock, addr);listen(sock);while ( 1 ) { int new_sock = accept(sock, &addr); char buf[100]; size_t size = read(new_sock, buf, 100); if ( size == 0 ) { close(new_sock); } else { write(new_sock, buf, size); }}
38.
多重化での処理の流れ
39.
クライアント 待ち受けソケット(イベント監視対象
サーバ につっこむ)
40.
クライアント 待ち受けソケット(イベント監視対象)
サーバ
41.
クライアント
accept(sock) 待ち受けソケット 接続ソケット(イベント監視対象) サーバ (イベント監視 対象につっこ む)
42.
クライアント 待ち受けソケット
接続ソケット(イベント監視対象) サーバ (イベント監視対 象)
43.
selectによる多重化
44.
https://gist.github.com/mizzy/5343931
45.
epollによる多重化
46.
https://gist.github.com/mizzy/5343937
47.
多重化用関数
48.
select
poll epoll kqueue/dev/poll
49.
select/pollは全部のソケットを調べる
50.
epoll, kqueue, /dev/pollはイベントが発生したソケットだけを調べることができる
51.
イベントライブラリ
52.
libevent libev
53.
OSによる違いを吸収
してくれる
54.
I/O多重化以外にもタイマーイベントやシグナルイベントなんかも扱える
55.
node.jsはlibevent + libeio
56.
各種言語による非同期echoサーバ
57.
Perl(AnyEvent)
58.
https://gist.github.com/mizzy/5343944
59.
Ruby(EventMachine)
60.
https://gist.github.com/mizzy/5343953
61.
Python(twisted)
62.
https://gist.github.com/mizzy/5343956
63.
Python(eventlet)
64.
https://gist.github.com/mizzy/5343959
65.
node.js
66.
https://gist.github.com/mizzy/5343964
67.
イベント駆動プログラミン
グのデメリット
68.
マルチコアでスケールしな
い
69.
処理の流れが追いにくい
書きにくい
70.
var req_to_zenrin =
http.request( options, function(res2) { res2.on('end', function() { res.end(); }); res2.on('data', function(chunk) { res.write(chunk); }); });
71.
var referer;sdb.getItem(
'gha', host, function( error, result ) { if ( result ) { referer = ‘http://hoge.com/’; } });// sdb.getItem()終了前に次の処理
72.
sdb.getItem(
'gha', host, function( error, result ) { if ( result ) { access_to_zenrin('http://hoge.com'); } else { access_to_zenrin(); } });
73.
ネットワークアクセスを伴
う 処理をすべて非同期で 書かないといけない
74.
なのでlibmysqlclientは
使えない
75.
node-mysqlはlibmysqlclient相当の処理を再実装してる
(っぽい)
76.
参考文献
Download
[8]
ページ先頭
©2009-2025
Movatter.jp