[Moscow.pm] Обмен данными с потоком.

Victor Efimov victor на vsespb.ru
Пт Июн 6 01:40:21 PDT 2014


6 июня 2014 г., 12:26 пользователь Alexander Lourier <aml на rulezz.ru> написал:
> Насколько я понимаю, в Chrome процессы нужны ради того, чтобы можно было
> легко и безопасно прибить зависшую вкладку. И вкладкам не нужно друг с
> другом много общаться.

всё же там есть взаимодействие между вкалдками (обозначено как IPC)
http://www.chromium.org/developers/design-documents/multi-process-architecture
и оно посложнее чем тут, т.к. выделили отдельный процесс на диспечерезацию

http://www.chromium.org/developers/design-documents/inter-process-communication
===
Our main inter-process communication primitive is the named pipe. On
Linux & OS X, we use a socketpair(). A named pipe is allocated for
each renderer process for communication with the browser process. The
pipes are used in asynchronous mode to ensure that neither end is
blocked waiting for the other.
===
я так понимая в винде там неймед пайп, а в *nix всё же сокет, а не пайп.

>
> А если задачам надо много обмениваться данными друг с другом, то потоки
> проще гораздо. Единственное - перл не заточен под это (разделение памяти -

Да, в perl threads - не вариант. Впрочем в других динамических языках
- ruby/python есть GIL что тоже делает использование всех ядер CPU
проблематичным.

> гадость, очереди и пайпы - гадость). Я бы перл рассматривал как возможный
> вариант, только если на нем уже много кода написано в проекте, и
> переписывать на другой язык слишком дорого.
>
> On Jun 6, 2014 8:50 AM, "Victor Efimov" <victor на vsespb.ru> wrote:
>>
>> 6 июня 2014 г., 7:35 пользователь Vladimir Melnichenko
>> <melnichenkovv на gmail.com> написал:
>> >>Ну а если воркеры вычисления делают, т.е. CPU потребляют, будет
>> >> работать?
>> >
>> > Отвечу за Антона - будет, медленней точно не станет.
>> Только на одном CPU.
>>
>> > Оборачиваем "воркер" в async - в цикле эти асинки складываем в массив,
>> > Делаем join и радуемся массиву значений.
>>
>> > Создавать под это процессы это перебор.
>> Вот из задания ТС не очевидно перебор это или нет, требований к
>> производительности нет, что воркеры делают - не написано, насколько
>> это задание и результат важно для ТС тоже не написано.
>>
>> >
>> >
>> > 5 июня 2014 г., 22:24 пользователь Victor Efimov <victor на vsespb.ru>
>> > написал:
>> >
>> >> 5 июня 2014 г., 22:12 пользователь Antonio Nikishaev <a на lelf.me>
>> >> написал:
>> >> > Нахрена вам разделяемая память и костыли с трубами?
>>
>> Я бы не назвал это костылями, это дефолтный способ как делается
>> взаимодействие между процессами в POSIX системах, есть вариации
>> (вместо пайпов сокеты, или IPC shared memory, может быть
>> mmap, passfd). Другое дело что это можно назвать велосипедом, т.к. код
>> приходится писать самому. Ну есть готовые модули которые что-то из
>> этого делают, например Parallel::ForkManager, хотя для этой задачи он
>> не очень то подходит. Может есть другие. Возможно универсального
>> модуля нет, т.к. сложно сделать один подходящий для всех применений, а
>> для некоторых применений есть job сервера, или просто сервера (типа
>> HTTP::Daemon + самостоятельный форк = уже не нужно взаимодействие
>> между мастером и воркерами)
>>
>> Посмотрите на браузеры - chrome использует мультипроцессинг, "признав"
>> его превосходство перед threads в linux, firefox использует threads,
>> но никому в голову не пришло использовать библиотеки для ассинхронного
>> ввода-вывода, на одном ядре.
>> --
>> Moscow.pm mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>


Подробная информация о списке рассылки Moscow-pm