К примеру есть массив состоящий из 100 эл-в.
В цикле пораждается 4 процесса, мне нужна распределить между 4мя процессами эл-ты массива, каждому процессу по 25 и вывести их на STDOUT.
Думаю можна это зделать через файл, пайпы и разделяемую память ( без модуля IPC::Shareable ну или с ним ) но не знаю как, эксперементировал по разному, впринцыпе сама работа мне понятно но а вот реализовать perl-языком не могу.
[1]Если делать через файл, то прочесть из файла 25 эл-в, счетчик включить потом записать результаты счетчика в др файл, далее след процесс еще раз прочтет файл 1й и 2й в который записали счетчик и тд. надейюсь понятно описал.
[2]Через пайпы не сильно понимаю.
[3]Через разделяемую память почти аналогия с файлом.
Но как это реализовать я не знаю, помогите пожалуйсто.
ps: использую fork()
вот скрипт на базе которога я думал делать:#!/usr/bin/perl
use strict;
use warnings;
my $num = 4;
my @child;
for(1..$num) {
my $pid = fork();
if($pid) { push @child,$pid; }
elsif($pid == 0) { print "$$\n"; exit(0); }
else{ print "fork() failed : $!\n"; }
}
for(@child) { waitpid($_,0); }
ps: я пробовал делать вычисления в родительском а потом по 25 элементов передавать дочерним = у меня это не получилось.
Хотя если делать конструкцию :
if(fork ==0) {
.....
}
if(fork ==0) {
.....
}
if(fork ==0) {
.....
}
if(fork ==0) {
.....
}