Как сделать несколько потоков для подпрограммы с использованием Perl? - PullRequest
0 голосов
/ 25 ноября 2011

У меня есть массив, который содержит имена файлов, которые я собираюсь создать.Я написал код ниже, который создает один файл за раз.

use strict;
use File::Slurp;

my @files_to_create=(file_1,file_2......file_100000);
my $File_Con="blah blah...";

foreach my $create_file(@files_to_create){
  &Make_File($create_file);
}

sub create_file{
    my $to_make=shift;
    write_file($to_make,$File_Con);
}

Я хотел бы поделиться подпрограммой для нескольких скаляров в массиве. Следовательно, я могу сократить время создания файла. Может кто-нибудь предложить шаги, которые нужно сделать ...

1 Ответ

1 голос
/ 25 ноября 2011

См. perldoc perlthrtut для очень хорошего руководства по использованию потоков в Perl.

use strict;
use warnings;
use threads;

sub create { ... }

my @files_to_create = map { "file_$_" } 1 .. 100_000;
my $config = "blah blah";

my @threads; # To store the threads created

foreach my $file ( @files_to_create ) { # Create a thread for each file

    my $thr = threads->new( \&create, $file, $config );
    push @threads, $thr;
}

$_->join for @threads;  # Waits for all threads to complete
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...