AsioとWindows

非同期処理にまつわるWindowsのエトセトラ?
0
Akira Takahashi @cpp_akira

名前のとおり。 RT @repeatedly: Asioって非同期なんだよなぁ

2010-02-24 21:53:52
SKS/ファントムの申し子 @repeatedly

@cpp_akira あれどうやって非同期実現してるんですか?Rubyとかだとlibevとかのラッパー使ってほげほげやるんですが.

2010-02-24 21:54:50
SKS/ファントムの申し子 @repeatedly

非同期って一からやるとめちゃくちゃ面倒そうなんだけども.かといってBoostがlibevとかlibeventみたいな外部ライブラリに依存しているとも思えない…

2010-02-24 21:55:40
Akira Takahashi @cpp_akira

@repeatedly Linuxとかそっちのほうは知らないですけど、WinSockはもともと非同期なんじゃ?

2010-02-24 21:57:11
Egtra (ysk-noh) @egtra

. @repeatedly @cpp_akira Windows版はIO完了ポートとドキュメントに書いてあったと思います。

2010-02-24 21:58:19
@iwata_m

非同期ってどこ情報ですか?(キリッ QT @cpp_akira: @repeatedly Linuxとかそっちのほうは知らないですけど、WinSockはもともと非同期なんじゃ?

2010-02-24 22:00:16
Egtra (ysk-noh) @egtra

IO完了ポートってのは一言で言えばまあWindowsの非同期IOの1種。もっと詳しい人はTwitter上にまだまだいるだろう。

2010-02-24 22:00:29
@iwata_m

I/O Completion Port の概念が、ASIO より先なのに正確に理解されていないことが悲しい

2010-02-24 22:01:07
@iwata_m

I/O Completion Port が非同期 I/O の一種という表現がしっくりこない。非同期 I/O と、I/O Completion Port って (実装はともかく) 別のものでしょ

2010-02-24 22:03:46
SKS/ファントムの申し子 @repeatedly

んん,何かTLで意見が分かれている?ぞ.

2010-02-24 22:04:37
Akira Takahashi @cpp_akira

@repeatedly ぼくはくわしくないので信用しないでください

2010-02-24 22:05:53
Egtra (ysk-noh) @egtra

そういえば、非同期I/O != Overlapped I/Oだったようなと思ったけどソース出てこない。

2010-02-24 22:06:01
Egtra (ysk-noh) @egtra

@iwata_m そこもやっぱり別ですか。

2010-02-24 22:06:25
@iwata_m

これは、3/28 (予定) で取り上げるつもりの話題である、「非同期」とは何ぞや?という言葉遊びに起因するところが大きいのですね。

2010-02-24 22:07:54
@iwata_m

そもそも Threading が Light-weight Process として実装された ASIO と、Threading が存在すること、同期オブジェクトが統一的に扱えることを前提に作られた IOCP (I/O Completion) は別の思想・制約を食らってるのよ

2010-02-24 22:09:45
@iwata_m

ただ、Threading Model の違いを正しく認識できていないと話が速攻で噛み合わなくなる。なのであまり深くここで突っ込みたくはないのです。。

2010-02-24 22:11:32
Egtra (ysk-noh) @egtra

うんそうだ。自分は何のつもりで言ったんだ? RT @iwata_m: 別物でしょ… QT @egtra: そういえば、非同期I/O != Overlapped I/Oだったようなと思ったけどソース出てこない。

2010-02-24 22:11:58
@iwata_m

別物でしょ… QT @egtra: そういえば、非同期I/O != Overlapped I/Oだったようなと思ったけどソース出てこない。

2010-02-24 22:10:11
@iwata_m

Signal の弊害、なぜ Windows NT が APC を好んで利用したか。ここが理解できないと Threading Model (COM じゃないよ) の違いは理解できないんじゃないかな

2010-02-24 22:13:32
@iwata_m

まあ、答えから言ってしまえば WinSock は Windows 3.0 の頃から導入されているものなので非同期もなにも Threading がない世代からの導入なわけです。非同期になったのは AFD 導入後

2010-02-24 22:17:38
Hajime Morita @omo2009

同期のAPIもありますよね。非同期しかつかったことないけど。 RT @cpp_akira 名前のとおり。 RT @repeatedly: Asioって非同期なんだよなぁ

2010-02-24 22:18:51
@iwata_m

なぜ I.O Completion Port が効率的なのか、どうして実現できるのか、は 3月に♪

2010-02-24 22:28:10
Egtra (ysk-noh) @egtra

そうそう、AsioがIO完了ポート使っているとはここに書いてある。他OSのことも書いてある。 http://www.boost.org/doc/libs/1_42_0/doc/html/boost_asio/overview/implementation.html

2010-02-24 22:29:48