5 июня 2014 г., 15:46 пользователь Харпалёв Иван <[email protected]> написал: > Добрый день, могучий MoscowPM > > Опять про параллельную обработку. > > Хочется написать вот такую схему обработки ввода: > master создаёт work'ов, > читает порции из файла, раздаёт порции worker'ам > ждёт, пока worker обработает, получает ответ worker'a > пишет результат в файл. > Так же мастер буфереизует вывод, чтобы выход писался в правильном порядке. мастер же один поток, ему не нужно думать о порядке.
> > Самое туманное: > Как передавать данные от мастера к worker'у и Обратно?!!!! > Как ждать готовности?!!! схема с fork, без Core/AE данными обмениваться через pipe. создаём pipe. например так https://github.com/vsespb/mt-aws-glacier/blob/421f9d04b96a4657d89eb7ef2bc66aee15b8cec3/lib/App/MtAws/ForkEngine.pm#L174 мастер сидит, ничего не делает. ждёт запросов от воркеров. воркер может послать запрос "дай задание". в ответ тут же получит задание. потом воркер, когда его сделает, должен послать ответ "задание готово, вот результат" мастер же с помощью IO::Select ( например так https://github.com/vsespb/mt-aws-glacier/blob/421f9d04b96a4657d89eb7ef2bc66aee15b8cec3/lib/App/MtAws/ParentWorker.pm#L54 ) получает запросы от воркеров. читать данные он должен спомощью того пайпа из которого читают, а писать в другой. мастер, когда получает задание от воркера, тогда и читает данные из файла (это всё имеет смысл если чтение "быстрое") > Должна ли такая схема (работа с диском из одного места) дать ускорение по > сравнению с чтением/записью файла в каждом worker'е? такая схема должна дать ускорение если воркеры сильно тормозят (тратят время на CPU или IO). В случае IO, можно обойтись и без неё. так же для неё нужно чтобы мастер был быстрым. быстро отдавал задания. основная нагрузка на воркеры. > > смотрел на Coro, увидел Coro::Simaphore, Coro::Signal ... но не пойму: > как сделать разделяемую память, (как быстро передавать данные между > мастером и worker'ом внутри Perl)? > как сделать неблокирующее ожидание готовности одного из worker'ов (при > котором можно заниматься вводом-выводом)? > > Подскажите, на чём и как такое писать!! > Спасибо! > > Уважение > Иван Харпалев > > > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
