Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобраться с очередями Thread::Queue 
:(
    Опции темы
ky0x5a
Дата 6.2.2012, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 17.5.2011

Репутация: нет
Всего: нет



Доброе время суток. Ниже приведен часть кода, он рабочий, но при этом сжирается память, на форуме искал (были подобные моменты), я не могу понять как использовать очереди для тредов, помоги пожалуйста.

Т.е. мне нужно что работало только $max_threads-колво, ниже код работает так: максимальное кол-во тредов 4, по мере их отмирания создается новый.

Код

main:
{
    $|++;
    # vars
    my $max_threads = 4;
    my %res : shared; 
    my $ref = shared_clone(\%res);
    my @srubdetails    = YAML::LoadFile('srubsdetails.dump');
    ################################################################################################

    my( $i, @Threads, @run );
    
    while(scalar @Threads < 50)
    {
        @run = threads->list(threads::running);
        
        if(scalar @run <= $max_threads)
        {
            push @Threads, threads->create('p_desc', $srubdetails[$i], $ref);
            printf("All threads [%d] thread started [%d] left %d/%d\n", scalar(@run), $Threads[$#Threads]->tid, scalar @Threads, scalar @srubdetails);
            $i++;
        }
        
        @run = threads->list(threads::running);
        
        foreach my $thr ( @Threads )
        {
            $thr->join() if $thr->is_joinable();
        }
        
        @run = threads->list(threads::running);
        sleep(0.1);
    }

    while (scalar @run != 0)
    {
        foreach my $thr (@Threads)
        {
            $thr->join if ($thr->is_joinable());
        }
        @run = threads->list(threads::running);
    }
    
    # 
    YAML::DumpFile('description.dump', %res);
};

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0408 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.