<p dir="ltr">Насколько я понимаю, в Chrome процессы нужны ради того, чтобы можно было легко и безопасно прибить зависшую вкладку. И вкладкам не нужно друг с другом много общаться.</p>
<p dir="ltr">А если задачам надо много обмениваться данными друг с другом, то потоки проще гораздо. Единственное - перл не заточен под это (разделение памяти - гадость, очереди и пайпы - гадость). Я бы перл рассматривал как возможный вариант, только если на нем уже много кода написано в проекте, и переписывать на другой язык слишком дорого.</p>
<div class="gmail_quote">On Jun 6, 2014 8:50 AM, "Victor Efimov" <<a href="mailto:victor@vsespb.ru">victor@vsespb.ru</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
6 июня 2014 г., 7:35 пользователь Vladimir Melnichenko<br>
<<a href="mailto:melnichenkovv@gmail.com">melnichenkovv@gmail.com</a>> написал:<br>
>>Ну а если воркеры вычисления делают, т.е. CPU потребляют, будет работать?<br>
><br>
> Отвечу за Антона - будет, медленней точно не станет.<br>
Только на одном CPU.<br>
<br>
> Оборачиваем "воркер" в async - в цикле эти асинки складываем в массив,<br>
> Делаем join и радуемся массиву значений.<br>
<br>
> Создавать под это процессы это перебор.<br>
Вот из задания ТС не очевидно перебор это или нет, требований к<br>
производительности нет, что воркеры делают - не написано, насколько<br>
это задание и результат важно для ТС тоже не написано.<br>
<br>
><br>
><br>
> 5 июня 2014 г., 22:24 пользователь Victor Efimov <<a href="mailto:victor@vsespb.ru">victor@vsespb.ru</a>> написал:<br>
><br>
>> 5 июня 2014 г., 22:12 пользователь Antonio Nikishaev <<a href="mailto:a@lelf.me">a@lelf.me</a>> написал:<br>
>> > Нахрена вам разделяемая память и костыли с трубами?<br>
<br>
Я бы не назвал это костылями, это дефолтный способ как делается<br>
взаимодействие между процессами в POSIX системах, есть вариации<br>
(вместо пайпов сокеты, или IPC shared memory, может быть<br>
mmap, passfd). Другое дело что это можно назвать велосипедом, т.к. код<br>
приходится писать самому. Ну есть готовые модули которые что-то из<br>
этого делают, например Parallel::ForkManager, хотя для этой задачи он<br>
не очень то подходит. Может есть другие. Возможно универсального<br>
модуля нет, т.к. сложно сделать один подходящий для всех применений, а<br>
для некоторых применений есть job сервера, или просто сервера (типа<br>
HTTP::Daemon + самостоятельный форк = уже не нужно взаимодействие<br>
между мастером и воркерами)<br>
<br>
Посмотрите на браузеры - chrome использует мультипроцессинг, "признав"<br>
его превосходство перед threads в linux, firefox использует threads,<br>
но никому в голову не пришло использовать библиотеки для ассинхронного<br>
ввода-вывода, на одном ядре.<br>
--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
</blockquote></div>