memo/20070306
created 2007-03-06 modified 2008-08-10
http://www.kegel.com/c10k.html
たくさんのクライアントを高効率でさばくサーバプロセスの設計問題をC10K(1万クライアント)問題というらしい。
まだ悩み中
アレ(Z)のイベント処理に一番近いものを作るにはWaitForMultipleObjectsを使えばよさげ。WinSock | Linux poll | Linux epoll | やること |
---|---|---|---|
WSAEventSelect | struct pollfdの作成、設定 | epoll_ctl | 1個のソケットと、そのソケットについて待っているイベントをあらわす1個のデータを作る |
WaitForMultipleObjects | poll | epoll_wait | 上記データの集合に対しタイムアウト付きで待つ |
しかしWaitForMultipleObjectsは1スレッドにつき64個しか待てない。しかもファイルやコンソールとの統一性はなさげ。
Windowsでファイル、ソケット、コンソールをまとめて並列に動作することができるのは重複I/Oのみなのか...
悩み中だが、ちょっとひらめいた。
Windowsの重複I/Oに対応するのは、アレ(Z)でいうとCLIのやり取りだと思う。
- 長い処理を続行するためにはコールバック関数を設定して抜ける
- んだけど、終了時の処理も同じコールバック関数を使う
- コールバックされたら、まず終了で呼ばれたのか続行で呼ばれたのか判定
- 続行なら、やりたい仕事を続ける
Unixをこっちにあわせれば統一ライブラリができそうな気がス。