Я создал сценарий Perl с двумя потоками:программы сотрудничества двух потоков
1) Создать .cfg
файлов
2) Прочитайте эти .cfg
файлов
Я хочу, чтобы выполнить это в то время как один поток заняты решения файлы, бок о бок мой второй поток будет читать эти файлы.
Bu У меня возникла проблема в тот момент, когда мой второй поток создан, он будет читать только файлы, созданные в этот момент. Может ли кто-нибудь дать представление о выполнении этой задачи.
Создание потоков и чтения файлов функции приведены ниже:
sub CreateThreads() {
$threads[0] = threads->create(\&CreateCFG);
sleep 3;
$threads[1] = threads->create(\&ReadCFG);
}
sub ReadCFG() {
my $id = threads->tid();
opendir(DIR, $filedir) or die $!;
while (my $files = readdir(DIR)) {
if ($files eq "." || $files eq "..") {
next;
}
else {
my $filepath = $filedir . "/" . $files;
if ($files =~ m/$probename/) {
my @file = split("&", $files);
if ($file[3] !~~ @reportrobots) {
push(@reportrobots, $file[3]);
my $raddr =
"/" . $file[1] . "/" . $file[2] . "/" . $file[3];
&ProbeReport(\$userdata_file, \$filepath, \$raddr);
}
}
}
}
}
Почему бы не объединить обе нити в одну, которая будет иметь обе функции: сначала создать файл, а затем прочитать его? – ZygD
Более подробная информация необходима для ответа на этот вопрос. Однако я подозреваю, что проблема заключается в том, что вы принимаете общие переменные, если это не так. – Sobrique
Созданные файлы CFG Actuallly, которые создаются из источника, и содержимое этого файла записываются в файл. Я хочу, чтобы первый поток продолжал создавать файлы, так как будет много файлов для создания около 300-400, и я хочу, чтобы второй поток начинался через 2-3 секунды, и он должен начать чтение файлов. –