有人可以告诉我为什么在下面的代码中打开文件时出错。错误从25个线程的第9次迭代中途开始,并且是“太多打开的文件”错误。错误只发生在线程中运行时,并且仅在使用DBI连接/断开连接时才会发生。这应该不会影响打开文件的数量吗? 我对Perl相当陌生,所以不确定自己做了些什么奇怪的事情。这是在Perl 5.8.8上。在Solaris 10上Perl - 使用DBD时出现太多文件错误
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 2010-06-22 14:54:16
我曾使用过它,但由于某种原因它不起作用。无论如何,现在好了,谢谢 – 2010-06-23 08:34:08