1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

Много поточность в Перл

Тема в разделе "Web Coding", создана пользователем fuck_r1der, 11 авг 2007.

Статус темы:
Закрыта.
Модераторы: latteo
  1. fuck_r1der

    fuck_r1der Читатель

    Заблокирован
    Регистр.:
    23 июл 2007
    Сообщения:
    77
    Симпатии:
    1
    слышал есть много разных вариантов, скриптом нужно сделать паралельно много коннектов к серверу, +как из перл скрипта запускать другие скрипты параллельно?
     
  2. nnmkayf

    nnmkayf

    Регистр.:
    25 июл 2007
    Сообщения:
    153
    Симпатии:
    98
    Для этого используется директива fork.
    Вот пример, как делается дети от родительского процесса:
    PHP:
    # set up the socket SERVER, bind and listen ...
    use POSIX qw(:sys_wait_h);
    sub REAPER {
        
    1 until (-=  = waitpid(-1WNOHANG));
        
    $SIG{CHLD} = \&REAPER;                 # unless $]>= 5.002
    }
    $SIG{CHLD} = \&REAPER;
    while (
    $hisaddr accept(CLIENTSERVER)) {
        
    next if $pid fork;                    # parent
        
    die "fork: $!" unless defined $pid;     # failure
        # otherwise child
        
    close(SERVER);                          # no use to child
        # ... do something
        
    exit;                                   # child leaves
    } continue { 
        
    close(CLIENT);                          # no use to parent
    }
    А в детях соотвественно делаешь то, что тебе нужно, например скачиваеш что-то.
    Вообще, этот пример из замечательной книги, которую ты можешь скачать по ссылке:

    http://rapidshare.com/files/48372989/OReilly.The.Perl.CD.Bookshelf.4.0.rar
    пароль: www.nulled.ws

    Конкретно смотри в Cookbook 17 раздел.
     
  3. fuck_r1der

    fuck_r1der Читатель

    Заблокирован
    Регистр.:
    23 июл 2007
    Сообщения:
    77
    Симпатии:
    1
    ага

    спасибо конечно, с форком я дулал уже, не понравилось что много проца жрет, насколько я знаю для каждого процесса отельно выделяется буфер памяти опр размера, +нагрузка на проц возрастает:) я слышал про нити(thread) но реально хорошего примера не нашел
     
  4. nulldamned

    nulldamned Создатель

    Регистр.:
    11 ноя 2006
    Сообщения:
    28
    Симпатии:
    22
    треды на перле слегка убогие, плюс их реализация например под фрибсд будет весьма проблематична, под линуксом более менее прилично, но тоже гемморой. для меньшей мороки посоветую на search.cpan.org поискать ForkManager, нагрузка на проц не большая, память сильно потоки не отжирают, и главный плюс - не нужно геммороиться... используется в некоторых моих проектах уже около 3 лет, нареканий пока не вызывал...
     
    fuck_r1der нравится это.
  5. fuck_r1der

    fuck_r1der Читатель

    Заблокирован
    Регистр.:
    23 июл 2007
    Сообщения:
    77
    Симпатии:
    1
    спасибо большое попробую, у меня кстати под фрей нити не пашут:D хз почему
     
  6. nnmkayf

    nnmkayf

    Регистр.:
    25 июл 2007
    Сообщения:
    153
    Симпатии:
    98
    Я слышал, абсолютно точно, не знаю, говорят что нити более Windows технология, и хорошо она работает только в них. Из UNIX`ов нити хорошо работают только на Solaris.
    По поводу нитей лучше работающих в Linux, чем во FreeBSD - это актуально только для ядер ветви 2.6, в ветви 2.4 - вообще ужасное глюкало.
    Что-то не ясно почему форки жрут больше процессора, с памятью - да могут быть сложности, но это решаемо. Суть в том что вся память используемая родителем, копируется в детей - поэтому может существовать мнение, что дети много жрут памяти, при грамотном проектировании такой проблемы быть не должно.
    Общее резюме - используем fork. Просто это нужно делать грамотно, чтобы не родитель данные в детей передавал, а дети брали только те данные, которые им реально нужны.
    p.s. Лично я с нитями никогда не заморачивался, fork - наше все ;)
     
  7. hippich

    hippich Создатель

    Регистр.:
    25 июл 2007
    Сообщения:
    26
    Симпатии:
    0
    нити - виндошное изобретение. на сипене чтото было про нити, но всё это изврат.
     
  8. fuck_r1der

    fuck_r1der Читатель

    Заблокирован
    Регистр.:
    23 июл 2007
    Сообщения:
    77
    Симпатии:
    1
    ага, понял уже, по поводу форка, у негодругая модель потоков, где создаются соседние процессы под которые выделяются дополнительные блоки памяти,а при работе с нитями, создаются как бы подпотоки в той эе области памяти:)
     
Статус темы:
Закрыта.