Может кто-нибудь посоветует, почему я получаю ошибки, открывая файл в коде ниже. Ошибки начинаются примерно наполовину через 9-ю итерацию из 25 потоков и являются ошибками «Слишком много открытых файлов». Ошибка возникает только при работе в потоках и только при использовании соединения DBI. Это не должно влиять на количество открытых файлов вообще? Я довольно новичок в Perl, поэтому не уверен, что я сделал что-то странное. Это на Perl 5.8.8. на Solaris 10.Perl - слишком много ошибок файлов при использовании DBD Oracle
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)[email protected]_;
open (my $fh, ">/tmp/da") or die "failed $! at iter $x thread $y";
close ($fh);
$dbh->disconnect;
}
Маленький бинарный значок в редакторе предназначен для вставки кода. (См. Справочное руководство по разметке.) – Ether
Я использовал это, и по какой-то причине это не сработало. В любом случае, ОК, спасибо –