.Наткнулся в каком-то блоге на скрипт: PHP: #!/usr/bin/perl -w use threads; my @threads; @threads for my $i (1..3) { push @threads, threads->create(\&get_now, $i); } foreach my $thread (@threads) { $thread->join(); } sub get_now { my $num = shift; print "thread ", $num, " => ", time(), "\n"; sleep 1; } Теперь вопросы: 1) Что означает этот символ ? Code: -> 2) Эм... Как отличить создаваемый объект от используемого метода (когда просматриваешь чужие скрипты).Может,я что не допонял ? 3) В строчке my $num = shift; удаляются элементы массива @_,но что это за элементы такие ? Где они передавались в массив ? 4) Зачем в процедуре get_now{} стоит оператор sleep ? Для задержки между созданием потоков или для чего ?
1) =\ наверно он вызывает метод из класса 2) Что то я вопроса не понял 3) Ну там скорее не массив передается, а переменная $i push @threads, threads->create(&get_now, $i); 4) слип наверно для наглядности используется
Вообще, раз нашел это на чьем-то блоге, то у автора и спросил бы зачем ему sleep. Кстати, в скрипте явные ошибки, и работать оно не должно. Вот в таком виде должно работать (не на чем проверить мне щас было, правда, но должно ): Code: #!/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"; }
Работает,но разве это многопоточность ? В процессах не видно,что количество потоков скрипта равно количеству заданных потоков.
Не понял.Я и говорил про один процесс,а не про миллион.Я имел в виду,что еоличество потоков должно увеличиваться в рамках одного процесса (perl.exe - 50,например),или я не прав ? ЗЫ: До форка не дошёл ещё...
На что? Многопоточен ли пример cr0w? Да, многопоточен. В процессах и не будет отображаться кол-во потоков (форки будут)