URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 5986
[ Назад ]

Исходное сообщение
"Распределение ресурсов между процессами. fork()"

Отправлено DiverD , 05-Дек-06 13:15 
К примеру есть массив состоящий из 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) {
    .....
}


Содержание

Сообщения в этом обсуждении
"Распределение ресурсов между процессами. fork()"
Отправлено test0 , 05-Дек-06 20:47 
use pthreads, luke :) Use google for information about the pthreads using with Perl, if needed.

"Распределение ресурсов между процессами. fork()"
Отправлено DiverD , 06-Дек-06 17:10 
>use pthreads, luke :) Use google for information about the pthreads using
>with Perl, if needed.

мне нужна именно с fork()