とみたです。 On Tue, 28 Jun 2005 21:06:27 +0900 Tanaka Akira <akr / m17n.org> wrote: > > 例えば、Solaris で 1024 以上のファイルの待ち合わせを行なうことができる > > ようになります。Solaris では FD_SETSIZE 以上のファイルを処理するには > > select(3C) ではなく poll(2) を使わないといけない…ということになってい > > るためです。 > Solaris で 1024以上のファイルを実際に select に与えた場合、どうなるん > でしょうか? Ruby 1.8 でやってみようと思ったんですが、Solaris では stdio の 256 の 壁があるので、select の上限の 1024 まで到達できませんでした (--; C で試してみました。FD_SETSIZE について考慮せずにやったら、FD_SET() で 1033 を超えたあたりで妙な動きを始めました。おそらくメモリを壊したので しょう。 [ruby-dev:26398] のように、コンパイル時に FD_SETSIZE を増加させてみた ところ、3000 くらいでも正常に動作しました。 poll() でなく select() のまま行くとしたら、Ruby の make 時に FD_SETSIZE をいくつにするかが問題でしょうか。最大の 65536 にすると fd_set 一つあたり 8KB の領域を食います(標準では 128B)。 -- とみたまさひろ <tommy / tmtm.org> 3469 42CC 4D32 F53C AD98 65A5 8C37 FF09 69C1 6040