More Related Content
PDF
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料) PDF
PDF
PDF
PDF
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~ PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ PDF
こんなに使える!今どきのAPIドキュメンテーションツール PDF
What's hot
PPTX
PDF
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部) PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」 PDF
PDF
PPTX
世界一わかりやすいClean Architecture PPTX
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理 PDF
PDF
FridaによるAndroidアプリの動的解析とフッキングの基礎 PPTX
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料) PPTX
PDF
PDF
PDF
40歳過ぎてもエンジニアでいるためにやっていること ODP
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える PDF
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか PPTX
PDF
PDF
PDF
Similar to イベント駆動プログラミングとI/O多重化
PDF
PDF
Kyoto Tycoon Guide in Japanese PPTX
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜 PPTX
CQRS+ESをAkka Persistenceを使って実装してみる。 PDF
PPTX
Elixir入門「第2回:PC間で通信するアプリをサクっと書いてみる」 KEY
PDF
PPTX
PDF
[Basic 8] プロセスとスレッド / 入出力 / シェル PPT
PPTX
Async Programming on Ruby PPT
PPTX
PDF
PDF
18166746-NeverBlock-RubyKaigi2009 PDF
PPT
PPT
PPTX
Elixir入門「第5回:Visualixirで見るマルチプロセス」 More from Gosuke Miyashita
PPTX
Serverspec at hbstudy #45 PPT
Danga::Socketの非同期処理の仕組みとPerlbalで非同期処理するプラグインを書く方法 PPTX
PPTX
PPTX
Open Source System Administration Framework - Func PPT
Assurer - a pluggable server testing/monitoring framework PPT
How Danga::Socket handles asynchronous processing and how to write asynchrono... PPTX
Inside Sqale's Backend at RubyConf Taiwan 2012 PPTX
Maglica - A Simple Internal Cloud Tool at #techkayac PDF
Walter ファミリーの紹介 at Shibuya.go#1 PPTX
Inside Sqale's Backend at YAPC::Asia Tokyo 2012 PPTX
PPT
Puppet Best Practices? at COOKPAD PPTX
Inside Sqale's Backend at Sapporo Ruby Kaigi 2012 PPTX
Serverspec at July Tech Festa 2013 PPTX
PPTX
PDF
Serverspec at Testing Framework Meeting PPTX
PPTX
イベント駆動プログラミングとI/O多重化
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 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.
- 44.
- 45.
- 46.
- 47.
- 48.
select
poll
epoll
kqueue
/dev/poll
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 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.
- 75.
- 76.