Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Системное программирование > Как реализовать параллельные запросы на перле


Автор: d0k 27.3.2010, 10:50
Подскажите инструмент с помощью которого можно распараллерить процессы на перл. Например реализовать подключение к нескольким сокетам, при чем не последовательно дожидаясь ответа от предыдущего, а сразу к нескольким и ответы от них получать через определенные дескрипторы.

Автор: RomanCh 27.3.2010, 19:25
Ну вообще это достаточно обще-системные механизмы. Следовательно - не плохо бы о них знать в общем контексте. Конкретно для перла см:
perldoc threads
perldoc -f fork
perldoc -f select

Автор: DurRandir 28.3.2010, 03:28
AnyEvent. Быстрее, надёжнее, меньше проблем. Когда надо распараллелить I/O - вы вряд ли будете упираться в процессор, чтобы потребовались потоки/процессы. Если же потребовались - то раздавайте задачи через Gearman.

Автор: RomanCh 28.3.2010, 04:25
Цитата(DurRandir @ 28.3.2010,  03:28)
AnyEvent. Быстрее, надёжнее, меньше проблем. Когда надо распараллелить I/O - вы вряд ли будете упираться в процессор, чтобы потребовались потоки/процессы. Если же потребовались - то раздавайте задачи через Gearman.

Ну да, только один минус - переносимость. Модуль-то не входит в стандартную поставку. Да и потом - я бы всё же очень сильно посоветовал изучить базовые механизмы, перед тем как использовать что-то уже готовое. А то в итоге потом получаем кучу кода который работает непонятно как даже для самих авторов, не говоря уж о тех кто его поддерживает.

Автор: Egik2 28.3.2010, 10:06
Мне тож интересно, кто пользовался многозадачностью через perl?

Когда-то надо было что-то писать, но на perle не решился, поскольку помню
погуглил, много писалось, что многопоточность через thread ненадежный.
Fork конечно есть fork, но он не очень то переносимый  smile.

Есть опыт по этому поводу?

Автор: JackYF 28.3.2010, 21:50
Я пользовался. Самый обычный fork. Работает smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)