Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Программирование
>
Perl
(Модератор:
McZim
) > Тема:
Нужна помощь с fork'ами
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Нужна помощь с fork'ами (Прочитано 8887 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Statos
Новенький
Offline
Нужна помощь с fork'ами
«
:
21-07-2010 07:28 »
Мне нужно поддерживать н-ое число потоков, при отработке одного потока он убивается, общее кол-во рабочих потоков уменьшается на один и создается новый. Я не понимаю как это сделать в родительском процессе, то есть как сделать общение между потоками
Вот примерно код:
Код:
#!/usr/bin/perl
my $pid;
my $n;
while(1){
if ($n<10){
$n++;
$pid=fork();
child() unless ($pid)
}
}
exit 0;
sub child{
sleep 3;
print "kill $$\n";
#Здесь нужно что-то типо $n-- в родительском
exit 0;
}
Записан
RXL
Технический
Администратор
Offline
Пол:
Re: Нужна помощь с fork'ами
«
Ответ #1 :
21-07-2010 15:32 »
fork() создает не поток, а копию родительского процесса!
Пул процессов или потоков поддерживать не сложно: просто не завершай поток, а дай знать управляющему процессу, что рабочий процесс выполнил задание и ждет следующего. Ожидание можно сделать с любой блокировкой - даже с блокировкой на чтение из трубы. Передавать задания можно через ту же трубу. Кстати, лучше использовать не трубы (pipe), а анонимные unix-сокеты.
«
Последнее редактирование: 21-07-2010 15:34 от RXL
»
Записан
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Statos
Новенький
Offline
Re: Нужна помощь с fork'ами
«
Ответ #2 :
21-07-2010 16:06 »
Я недавно начал писать на перле, и даже не представляю что такое труба, можешь дать ссылку или что-нибудь из книг посоветовать.
Если не сложно, пример как написать трубу и давать знать управляющему процессу.
Спасибо.
Записан
RXL
Технический
Администратор
Offline
Пол:
Re: Нужна помощь с fork'ами
«
Ответ #3 :
21-07-2010 16:48 »
Statos
, мой тебе совет: забудь на время про трубы, потоки, процессы и т.п. и займись изучением основ. Иначе просто не о чем будет разговаривать, т.к. на каждый ответ у тебя возникнет десять вопросов.
Рекомендую книгу Perl Programming (Программирование на Perl). Скачать можно тут:
https://club.shelek.ru/viewfiles.php?id=19
Записан
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Statos
Новенький
Offline
Re: Нужна помощь с fork'ами
«
Ответ #4 :
22-07-2010 04:00 »
Хорошо, благодарю.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Программирование
>
Perl
(Модератор:
McZim
) > Тема:
Нужна помощь с fork'ами
Загружается...