Может кто-нибудь посоветовать, почему я получаю ошибки при открытии файла в приведенном ниже коде. Ошибки начинаются примерно на полпути через 9-ю итерацию из 25 потоков и представляют собой ошибки «Слишком много открытых файлов». Ошибка возникает только при работе в потоках и только при использовании подключения/отключения DBI. Это вообще не должно влиять на количество открытых файлов, не так ли? Я новичок в Perl, поэтому не уверен, что сделал что-то странное. Это на Perl 5.8.8. на Солярис 10.
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;
}