とみたです。

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