以下のコードでファイルを開くときにエラーが発生する理由について誰かにアドバイスできますか?エラーは、25スレッドの9回目の反復の約半分から始まり、「開いているファイルが多すぎます」エラーです。このエラーは、スレッドで実行している場合、およびDBI接続/切断が使用されている場合にのみ発生します。これは、開いているファイルの数にまったく影響しないはずですか?私はPerlにかなり慣れていないので、何か変なことをしたかどうかはわかりません。これはPerl5.8.8にあります。Solaris10の場合。
use threads ();
use DBI;
use DBD::Oracle;
my $thrds=25;
my $iter=10;
my @threads;
for (my $j=0; $j<$iter; $j++) {
&start($j);
}
sub start {
my $k=$_[0];
for (my $i=0; $i<$thrds; $i++) {
$threads[$i] = threads->new(\&RunThread,$k, $i);
}
for (my $i=0; $i<$thrds; $i++) { $threads[$i]->join; }
}
sub RunThread {
my $dbh = DBI->connect("dbi:Oracle:lnrmsd9.world", "rms_reader", "rms_reader") or die "failed connect";
my ($x, $y)=@_;
open (my $fh, ">/tmp/da") or die "failed $! at iter $x thread $y";
close ($fh);
$dbh->disconnect;
}