ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Perl - насчёт многопоточности.
  #1  
Старый 08.11.2009, 04:33
Аватар для GenTao
GenTao
Участник форума
Регистрация: 10.10.2009
Сообщений: 133
Провел на форуме:
143706

Репутация: -1
По умолчанию Perl - насчёт многопоточности.

.Наткнулся в каком-то блоге на скрипт:

PHP код:

#!/usr/bin/perl -w

use threads;


my @threads;

@
threads

for my $i (1..3) {

  
push @threadsthreads->create(\&get_now$i);

}


foreach 
my $thread (@threads) {

    
$thread->join();

}


sub get_now

{

    
my $num shift;
    print 
"thread "$num" => "time(), "\n";
    
sleep 1;



Теперь вопросы:

1) Что означает этот символ ?
Код:
->
2) Эм... Как отличить создаваемый объект от используемого метода (когда просматриваешь чужие скрипты).Может,я что не допонял ?

3) В строчке my $num = shift; удаляются элементы массива @_,но что это за элементы такие ? Где они передавались в массив ?

4) Зачем в процедуре get_now{} стоит оператор sleep ? Для задержки между созданием потоков или для чего ?
 
Ответить с цитированием

  #2  
Старый 08.11.2009, 04:56
Аватар для Spyder
Spyder
Members of Antichat - Level 5
Регистрация: 09.10.2006
Сообщений: 1,698
Провел на форуме:
9098076

Репутация: 4303


По умолчанию

1) =\ наверно он вызывает метод из класса
2) Что то я вопроса не понял
3) Ну там скорее не массив передается, а переменная $i
push @threads, threads->create(&get_now, $i);

4) слип наверно для наглядности используется
 
Ответить с цитированием

  #3  
Старый 08.11.2009, 04:57
Аватар для Spyder
Spyder
Members of Antichat - Level 5
Регистрация: 09.10.2006
Сообщений: 1,698
Провел на форуме:
9098076

Репутация: 4303


По умолчанию

cr0w, упс, я не читал твоего поста)
 
Ответить с цитированием

  #4  
Старый 08.11.2009, 17:26
Аватар для GenTao
GenTao
Участник форума
Регистрация: 10.10.2009
Сообщений: 133
Провел на форуме:
143706

Репутация: -1
По умолчанию

Хмм)).Я так понял,sleep там вообще не нужен?)))
 
Ответить с цитированием

  #5  
Старый 08.11.2009, 18:39
Аватар для cr0w
cr0w
Познающий
Регистрация: 11.09.2008
Сообщений: 99
Провел на форуме:
2753780

Репутация: 585
По умолчанию

Цитата:
Сообщение от GenTao  
Хмм)).Я так понял,sleep там вообще не нужен?)))
Вообще, раз нашел это на чьем-то блоге, то у автора и спросил бы зачем ему sleep. Кстати, в скрипте явные ошибки, и работать оно не должно. Вот в таком виде должно работать (не на чем проверить мне щас было, правда, но должно (: ):
Код:
 #!/usr/bin/perl

use threads;
use warnings;
use strict; 

my @threads;
push @threads, threads->create(\&get_now, $_) for (1..10);
$_->join() foreach @threads; 

sub get_now { 
    my $num = shift;
    print 'thread ', $num, ' => ', time(), "\n";
}
 
Ответить с цитированием

  #6  
Старый 09.11.2009, 04:58
Аватар для GenTao
GenTao
Участник форума
Регистрация: 10.10.2009
Сообщений: 133
Провел на форуме:
143706

Репутация: -1
По умолчанию

Работает,но разве это многопоточность ? В процессах не видно,что количество потоков скрипта равно количеству заданных потоков.
 
Ответить с цитированием

  #7  
Старый 09.11.2009, 08:17
Аватар для krypt3r
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

o_O Треды выполняются в рамках одного процесса. Нужна куча процессов - юзайте fork()
 
Ответить с цитированием

  #8  
Старый 09.11.2009, 17:14
Аватар для GenTao
GenTao
Участник форума
Регистрация: 10.10.2009
Сообщений: 133
Провел на форуме:
143706

Репутация: -1
По умолчанию

Не понял.Я и говорил про один процесс,а не про миллион.Я имел в виду,что еоличество потоков должно увеличиваться в рамках одного процесса (perl.exe - 50,например),или я не прав ?

ЗЫ: До форка не дошёл ещё...
 
Ответить с цитированием

  #9  
Старый 11.11.2009, 21:12
Аватар для GenTao
GenTao
Участник форума
Регистрация: 10.10.2009
Сообщений: 133
Провел на форуме:
143706

Репутация: -1
По умолчанию

Не ответят мне )
 
Ответить с цитированием

  #10  
Старый 11.11.2009, 23:04
Аватар для krypt3r
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

На что? Многопоточен ли пример cr0w? Да, многопоточен. В процессах и не будет отображаться кол-во потоков (форки будут)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Just Another Perl Hacker ph1l1ster PHP, PERL, MySQL, JavaScript 6 21.05.2009 01:36
Дешевый Хостинг SimBa Социальные сети 15 03.05.2009 14:54
Опасность ошибок Perl недооценивалась? 1251soldier Мировые новости 0 01.12.2005 20:56
Books Perl FRAGNATIC PHP, PERL, MySQL, JavaScript 0 11.08.2005 16:58
Безопасность приложений на Perl k00p3r Чужие Статьи 0 12.06.2005 09:39



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ