The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Perl Threads"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Perl Threads"  
Сообщение от pheonix (??) on 17-Мрт-09, 19:55 
Есть такой пример:

#!/usr/bin/perl

  use threads;
my @thread = ();
for (my $i = 0; $i <= 2; $i++) {
   $thread[$i] = threads->new(\&pearl_thread, $i);
   print "Создана $i-я нить. TID=", $thread[$i]->tid, "\n";
}
for (my $i = 2; $i >= 0; $i--) {
   print "$i-я нить вернула ", $thread[$i]->join, "\n";
}
sub pearl_thread ($) {        
   my $number = shift;        
   my $random = int(rand(7)) + 1;
   print "\t$number-я нить ждет $random сек.\n";
   sleep $random;                
   return $random;              
}  

он порождает 3 нити они выполняются параллельно, потом он чекает ответ и всё прекрасно, но как быть если нитей нужно отработать несколько десятков тысяч, если их все запустить сразу то скрипт вывалиться с сегментацией памяти оно и понятно, мало того так не нужно, как сделать так чтобы постоянно выполнялось одновременно по 100, и до тех пор пока не выполняться все 100 000???

то есть первый раз запущено 100 нитей, как только отработала 1 нить из 100, запускается 101 и так далее.

и ещё один момент, не очень удобно, если одна нить повисла, то программа будет ждать пока она не завершиться, как отлавливать что нить завершилась?

не могу сделать решение уже второй день, но очень нужно, помогите кто чем может :)

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

  • Perl Threads, NuINu, 21:38 , 17-Мрт-09, (1)  
    • Perl Threads, pheonix, 22:06 , 17-Мрт-09, (2)  
      • Perl Threads, parad, 02:28 , 18-Мрт-09, (3)  
      • Perl Threads, NuINu, 10:04 , 18-Мрт-09, (4)  
        • Perl Threads, ага, 16:06 , 18-Мрт-09, (5)  

Сообщения по теме [Сортировка по времени | RSS]


1. "Perl Threads"  
Сообщение от NuINu (??) on 17-Мрт-09, 21:38 

>он порождает 3 нити они выполняются параллельно, потом он чекает ответ и
>всё прекрасно, но как быть если нитей нужно отработать несколько десятков
>тысяч, если их все запустить сразу то скрипт вывалиться с сегментацией
>памяти оно и понятно, мало того так не нужно, как сделать
>так чтобы постоянно выполнялось одновременно по 100, и до тех пор
>пока не выполняться все 100 000???

ты сумашедший, зачем тебе 100 тысяч нитей, да еще привсем при этом чтобы из них выполнялось одновременно только 100, если тебе нужно обрабатывать 100 заданий то и имей 100 нитей.(раз уж так нравиться делать ЭТО через нити)

>
>не могу сделать решение уже второй день, но очень нужно, помогите кто
>чем может :)

"второй день" :)

впрочем, хоть я и не классик, можете посмотреть мои примеры
http://forum.vingrad.ru/forum/topic-247455/kw-%D0%...


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Perl Threads"  
Сообщение от pheonix (??) on 17-Мрт-09, 22:06 
>[оверквотинг удален]
>ЭТО через нити)
>
>>
>>не могу сделать решение уже второй день, но очень нужно, помогите кто
>>чем может :)
>
>"второй день" :)
>
>впрочем, хоть я и не классик, можете посмотреть мои примеры
>http://forum.vingrad.ru/forum/topic-247455/kw-%D0%...

мне надо обработать было ВСЕ(100 000) по очереди но рабочих по 100, ну так надо, в общем я решил уже проблему, зашёл сюда зачесть кто что посоветовал))) но как всегда на оппеннет ничего не посоветовали путнего, ну а ты чувак вместо использования LWP там в своём посте  учил бы Socket

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Perl Threads"  
Сообщение от parad (??) on 18-Мрт-09, 02:28 
нуну, ты бы лучше прежде чем бычить почитал теорию конечных автоматов, про мультиплексирования что-нибуть узнал, на худой конец найди статьи про трединг в перле и его реализацию и почему им никто из перловиков не пользуется...

а насчет 100000 - это каким же надо быть нулевым программистом, чтобы не знать банальных вещей. и на последок Socket - тут ты грамотно попалился - читай про неблокируемые сокеты.

а чувак тебе правильно сказал - не тупи.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Perl Threads"  
Сообщение от NuINu (??) on 18-Мрт-09, 10:04 
>[оверквотинг удален]
>>"второй день" :)
>>
>>впрочем, хоть я и не классик, можете посмотреть мои примеры
>>http://forum.vingrad.ru/forum/topic-247455/kw-%D0%...
>
>мне надо обработать было ВСЕ(100 000) по очереди но рабочих по 100,
>ну так надо, в общем я решил уже проблему, зашёл сюда
>зачесть кто что посоветовал))) но как всегда на оппеннет ничего не
>посоветовали путнего, ну а ты чувак вместо использования LWP там в
>своём посте  учил бы Socket

а я нигде LWP там и не использовал, ты меня с кем то путаешь. там был пример как правильно  тредами работать.
ну сделал так сделал.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Perl Threads"  
Сообщение от ага on 18-Мрт-09, 16:06 
http://www.free-lance.ru/projects/?pid=187619&f=1

Чувак, плакали твои 2500, надо было на С писать, как в задании указано :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру