На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Внимательно изучите правила раздела перед созданием темы
0. ПРИЛАГАЙТЕ СВОИ СКРИПТЫ.
1. Прежде чем создать топик, используйте поиск. Возможно это уже обсуждалось.
2. В топике указывайте ОС, режим работы скрипта (CLI|CGI). Очень желателен вывод лог-файлов и того места, куда у вас назначен вывод данных (STDOUT|STDERR)
3. Помните: вы знаете что вы хотите, а форумчане - нет. Поэтому следуйте простому правилу: грамотный развернутый вопрос - грамотный развернутый ответ.
Модераторы: ANDLL
  
    > Threads + nested child processes = блокировка?
      Добрый день,

      Помогите побороть проблему: есть скрипт, последовательно вызывающий другой скрипт (с параметрами). На уровне:
      ExpandedWrap disabled
        foreach $tree (@treeListIn)
        {
            my ($statusOut, @lines) = call_cmd_ex($_);
            if ($statusOut)
            {
                die "Error\n";
            }
        }

      Я эту "штуку" решил сделать многопоточной:
      ExpandedWrap disabled
        foreach $tree (@treeListIn)
        {
            while (threads->list(threads::running) > 0) {
                log_msg("Waiting for worker\n");
                sleep(5);
            }
         
            threads->create(sub {
                    my ($statusOut, @lines) = call_cmd_ex(@_);
                    return ($statusOut);
                }, $_);
        }

      И вот тут начинается самое интересное: второй скрипт успешно стартует, успешно запускает еще один процесс (и он успешно завершается), запускает следующий task и он (этот task) "подвисает": State: Wait:WrLpcReply.

      Подскажите из-за чего такое может происходить (и что с этим делать).

      С уважением...

      P.S.
      Windows XP, CLI, Perl 5.8.8
      Сообщение отредактировано: _hunter -
        В FAQ'е есть подробный пример работы с потоками.
        Но так вот сходу поглядев, после первой обработки вы более ничего не обрабатываете.
          Я этих примеров уже средних размеров кучку просмотрел...

          А чего именно я не обрабатываю?
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0188 ]   [ 15 queries used ]   [ Generated: 28.04.24, 05:41 GMT ]