
19.10.2007, 13:10
|
|
Постоянный
Регистрация: 05.06.2007
Сообщений: 335
С нами:
9965892
Репутация:
677
|
|
Сообщение от Spyder
Предположим у меня есть массив полученный из файла. Предположим есть 10 потоков. Как разбить этот массив на 10 частей и что бы каждый поток работал со своей частью?
на самом деле разбивать ничего не нужно, так же не следует читать весь файл в массив ибо размер его в оперативной памяти будет слишком большим, я когда пишу всякие бруты, наполняю массив паролями, затем потоки дергают из него пароли, когда массив опустеет, он снова заполняется паролями и потоки снова запускаются
пример-
#!/usr/bin/perl
use threads;
use threads::shared;
my @pass : shared; #расшариваем массив
$thr = 10;
open (pass, "<$dic");
Next:
@pass = pass(); #вызываем функцию наполнения массива пасами
#создаем потоки
for(0..$thr)
{
$trl[$_] = threads->create(\&Brut);
}
for(0..$thr)
{
$trl[$_]->join; #ждем пока они завершатся
}
sub Brut
{
while (@pass)
{
$pass = shift @pass;
# тут собственно сам брут #
}
}
goto Next;
#функция заполнения массива пасвордами фром the файлек
sub pass
{
my (@mas);
while (<pass>){
push @mas, $_;
last if (@mas > 300);
}
chomp @mas;
return @mas;
}
Последний раз редактировалось C!klodoL; 19.10.2007 в 23:38..
|
|
|