-1
다음 코드의 메모리 소비는 실행 과정에서 증가합니다. 무엇이 잘못 될 수 있습니까? 쓰레드에서 완전히 빠져 나오기 위해해야 할 일이 있습니까? 대부분의 시스템, 빈번하고 지속적인 창조와 스레드의 파괴 그냥 스레드를 실행하는 간단하지만. 펄 인터프리터의 메모리 풋 프린트 성장을 계속 증가로 이어질 수에 http://perldoc.perl.org/threads.htmlPerl 스레드에서 완전히 종료하십시오.
"에서
#!/usr/bin/perl -w
use strict;
my ($i,$URL);
my @Thread;
my $NUM_THREADS=4;
my @response:shared =();
while(1)
{
for($i=0;$i<$NUM_THREADS;$i++)
{
if($response[$i] is processed)
{
$URL=FindNextURL();
$Thread[$i]=new threads \&Get,$i,$URL;
$Thread[$i]->detach();
}
}
# wait for atleast one $response[$i]
# if ready process it
}
sub Get
{
my $i=$_[0];
my $URL=$_[1];
$response[$i]=FetchURL($URL);
return;
}
당신은 전체 변수를 가지고 있고 스파게티 코드에 무엇을 말할 수 있습니다. 멋진 것을 시도하기 전에 먼저 코드의 이러한 측면을 다스리려고합니다. –
@response라는 전역 변수가 하나뿐입니다. 전역 변수를 사용하지 않는 다른 모든 메소드는 환영합니다. – Jean
'$ i','@ Thread' 및'$ URL'도 전역 변수입니다. –