flat7th

memo/20070306

created 2007-03-06 modified 2008-08-10 

http://www.kegel.com/c10k.html

たくさんのクライアントを高効率でさばくサーバプロセスの設計問題を
C10K(1万クライアント)問題というらしい。

まだ悩み中

アレ(Z)のイベント処理に一番近いものを作るにはWaitForMultipleObjectsを使えばよさげ。

WinSockLinux pollLinux epollやること
WSAEventSelectstruct pollfdの作成、設定epoll_ctl1個のソケットと、そのソケットについて待っているイベントをあらわす1個のデータを作る
WaitForMultipleObjectspollepoll_wait上記データの集合に対しタイムアウト付きで待つ
の対応があるとみた。

しかしWaitForMultipleObjectsは1スレッドにつき64個しか待てない。しかもファイルやコンソールとの統一性はなさげ。

Windowsでファイル、ソケット、コンソールをまとめて並列に動作することができるのは重複I/Oのみなのか...

悩み中だが、ちょっとひらめいた。
Windowsの重複I/Oに対応するのは、アレ(Z)でいうとCLIのやり取りだと思う。

  • 長い処理を続行するためにはコールバック関数を設定して抜ける
  • んだけど、終了時の処理も同じコールバック関数を使う
  • コールバックされたら、まず終了で呼ばれたのか続行で呼ばれたのか判定
  • 続行なら、やりたい仕事を続ける

Unixをこっちにあわせれば統一ライブラリができそうな気がス。

http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=Windows+A4CE+IO


http://www.datanerds.net/~mike/libevent.html