|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Pavel Zhuk 2:5020/400 29 Dec 2003 20:57:50 To : All Subject : расставить семафор? в многопоточном приложении -------------------------------------------------------------------------------- Всем привет! Суть проблеммы: Есть прога которая таскает сбольшого количества URLов по маленькому кусочку. Hе спрашивайте зачем :) Юзаю её из под Windows 2000, но начал вылетать с сообщением memeory can not be read. тестил на разных машинах - всё одно и тоже, так что с памятью глюков быть не может...подозреваю, что где-то надо правильно расставить семафоры для потоков. помогите плиз. use HTTP::Request; use LWP::UserAgent; use IO::File; use threads qw(yield); use Thread; use Thread::Semaphore; my $output=IO::File->new("out.txt","w") or die "Cannot open output file"; $output->autoflush; my $threadnum=shift || 10; my $semaphore = new Thread::Semaphore; $flag=1; my $i : shared=0; my $prf=0; for ($j=132879;$j<200000;$j++) { if ($i<$threadnum) { $i++; (Thread->new(\&brut,$j))->detach(); } while ($i==$threadnum) { sleep(2); } } close($output); sub brut { my $num=shift; print "Entering $num\n"; my $url="http://name.domain.net/index.phtml?param=".$num; $request=HTTP::Request->new(GET,$url); my $agent=LWP::UserAgent->new; $bytes=$agent->max_size(1); my $response=$agent->request($request); my $out=$response->content; $semaphore->down; yield; $i--; print $output "$url\n $out \n"; print "Exiting $num\n"; $semaphore->up; } ЗЫ: Юзаю Perl только месяц, так что сильно ногами чур не пинать! Лучше расскажите что к чему :) Заранее спасибо. --- ifmail v.2.15dev5.1 * Origin: Unknown (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/91384055c780.html, оценка из 5, голосов 10
|