HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

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

Репутация: -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
Members of Antichat - Level 5
Регистрация: 09.10.2006
Сообщений: 1,698
С нами: 10309346

Репутация: 4303


По умолчанию

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

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

  #3  
Старый 08.11.2009, 04:57
Spyder
Members of Antichat - Level 5
Регистрация: 09.10.2006
Сообщений: 1,698
С нами: 10309346

Репутация: 4303


По умолчанию

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

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

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

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

  #5  
Старый 08.11.2009, 18:39
cr0w
Познающий
Регистрация: 11.09.2008
Сообщений: 99
С нами: 9296966

Репутация: 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
Участник форума
Регистрация: 10.10.2009
Сообщений: 133
С нами: 8730155

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

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

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

Репутация: 905


По умолчанию

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

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

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

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

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

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

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

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

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

Репутация: 905


По умолчанию

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



Предыдущая тема Следующая тема
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Just Another Perl Hacker ph1l1ster PHP 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 0 11.08.2005 16:58



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


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




ANTICHAT ™ © 2001- Antichat Kft.