![]() |
Perl многопоточночть
Подскажите как скрипт такого вида cделать многопоточным или дайте ссылки на нормальные мануалы по много поточности perl.
Код:
#!/usr/bin/perl |
Код:
#!/usr/bin/perl |
spyder@local:~> perl tt.pl
0 [error] 1 [error] Thread 1 terminated abnormally: Bad arg length for Socket::pack_sockaddr_in, length is 0, should be 4 at /usr/lib/perl5/5.10.0/i586-linux-thread-multi/Socket.pm line 386. Thread 2 terminated abnormally: Bad arg length for Socket::pack_sockaddr_in, length is 0, should be 4 at /usr/lib/perl5/5.10.0/i586-linux-thread-multi/Socket.pm line 386. 2 [error] Thread 3 terminated abnormally: Bad arg length for Socket::pack_sockaddr_in, length is 0, should be 4 at /usr/lib/perl5/5.10.0/i586-linux-thread-multi/Socket.pm line 386. ошибки вываливаются, я думаю надо поставить проверку на не пустое значение $ip что бы их небыло |
То что ты делаешь наверное можно сделать простым форком.
Но раньше стандартный билды перла не подерживает потоки хоть модуль был. Для того, что их юзать надо было перекомпилировать перл Теперь вот я что прочитал http://perldoc.perl.org/threads.html Как я понял, создаёться копия перла на каждый поток. Переменый не являються общими. И для скрипта это выглядит как форк. Вывод использовать форк проще всего или взять язык который разработан для правильной работы в потоками (умеет синхронизировать код) |
!
Вот что я своими силама накодил поправте если где ошибки )
Код:
#!/usr/bin/perl |
Код:
use warnings; |
use warnings 'all';
use strict; use diagnostics; и правь ;) PS: И не лучше-ли сделать цикл вне функции? |
fry, юзать форки для этой задачи не имеет смысла, куда проще и быстрее сделать всё с потоками
|
!
Вот так сказать последняя версия :-)
Код:
#!/usr/bin/perlКак лучше создовать сокет внутри фнкции или создать один а в функции юзать только connect ? |
ну дак ты попробуй и тем и другим способом. посмари в каком случае быстрее с помощью time-a и сделай так как тебе выгодно.
|
| Время: 00:33 |