usethreads;
#所用模块:threads
#模块中的方法:threads->create(),创建一个新线程;
#threads->join(),收割已经创建的线程;
#threads->list(threads::all),返回所有已经创建的线程;
#threads->is_joinable(),返回目标线程是否已经完成,等待join;
#得到随机数
subGetRandomNum
{
my$Max=@_;
returnint(rand($Max));
}
subGetRandomString
{
my$AlapContent=shift;
my$Num=shift;
my$RandomString=@$AlapContent[&GetRandomNum(@$AlapContent)].@$AlapContent[&GetRandomNum(@$AlapContent)].
@$AlapContent[&GetRandomNum(@$AlapContent)].@$AlapContent[&GetRandomNum(@$AlapContent)].&GetRandomNum(@$Num);
#print"stringis$RandomString\n";
return$RandomString;
}
#写入文件
subWriteFileContent
{
my($FileName,@logitem)=@_;
open(logfile,">$FileName")||die"can'topenfile$&!";
printlogfile"@logitem\n";
close(logfile);
}
subGenerateRandomFile()
{
my$FileLine=shift;
my$File=shift;
my@RandContent;
my@AlapContent=(a..z,A..Z);
my@Num=(1..100);
foreach$Line(1..$FileLine)
{
$RandomLine=&GetRandomString(\@AlapContent,\@Num);
push@RandContent,$RandomLine."\n";
}
my$FileName="./Save/".$File."\.txt";
&WriteFileContent($FileName,@RandContent);
}
my$SaveFile="./Save";
unless(-d$SaveFile)
{
mkdir$SaveFile;
}
print"PleaseInputtheFileNum,youwanttoGenerate\n";
my$FileNum=<STDIN>;
chomp($FileNum);
print"PleaseInputEachLinenuminthefile\n";
my$FileLine=<STDIN>;
chomp($FileLine);
my$RandomLine;
print"BeginingGenerateFile......\n";
my$max_thread=20;
my@thread_array;
foreach$File(1..$FileNum)
{
if($File%100==0)
{
print"The$Filefilecomplete\n";
}
if($current_thread>=$max_thread)
{
#遍历所有的线程
foreachmy$thread(@thread_array)
{
#判断线程是否运行完毕
if($thread->is_joinable())
{
#释放该线程
$thread->join();
}
}
$current_thread=0;
}
#创建线程
$thread_array[$current_thread]=threads->new(\&GenerateRandomFile,$FileLine,$File);
$current_thread++;
}
print"FinishtheWork,Pressanykeyexit......\n";
my$Input=<STDIN>;