Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: sleep () между тредами  (Прочитано 13178 раз)
0 Пользователей и 1 Гость смотрят эту тему.
samlab
Гость
« : 12-07-2010 13:43 » 

 Улыбаюсь Приветствую всех. Так и не смог решит проблему с очередью, интересует именно задержка между тредами, а не задержка между отправкой и обработкой данных...
Код:
#!/usr/bin/perl -w

$| = 1;

use LWP::UserAgent;

use threads ('yield',
'stack_size' => 8*4096,
'exit' => 'threads_only',
'stringify');

my $threads = 10;

threads->new(\&main) for 1 .. $threads;

$_->join for threads->list;

sub main

{

my $ua = LWP::UserAgent->new;
$ua->agent();
$ua->default_header('Referer' => "http://google.ru/");
$ua->default_header('Accept' => "text/html");
$ua->default_header('Accept-Charset' => "windows-1251");

$ua->get('http://google.ru/');

 sleep (20);

}

В приведенном выше коде одновременно 10 потоков запрашивают страницу гугля, потом скрипт спит 20 секунд... Каким образом можно настроить таймаут между потоками именно в запросе страницы, очень прошу помочь и заранее большое спасибо? Улыбаюсь
« Последнее редактирование: 12-07-2010 13:46 от samlab » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 12-07-2010 13:56 » 

samlab, честно говоря я не понял, что ты хочешь сказать - какие задержки, какие таймауты... Попробуй описать задачу понятнее.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
samlab
Гость
« Ответ #2 : 12-07-2010 15:00 » 

Прошу прощения... Я имел ввиду, чтобы в моем примере, который я выше привел, страница гугля запрашивалась не одновременно 10-ю потоками, а чтобы между этими 10 потоками была пауза, скажем, 1-ый поток запросил страницу, потом прошло 3 секунды, второй поток запросил страницу, прошло опять 3 секунды и т.д...
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 12-07-2010 15:06 » 

Делай паузу между созданием потоков. Функция sleep(secodes).
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
samlab
Гость
« Ответ #4 : 12-07-2010 17:09 » 

Делай паузу между созданием потоков. Функция sleep(secodes).
Спасибо большое. А можно ссылочку на доки по поводу этой функции, а то я что то не нашел нигде про нее упоминания, сейчас гуглил...
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 12-07-2010 19:40 » 

В *nix: man perlfunc
В винде - не знаю.
Или на оф.сайте Perl: http://perldoc.perl.org/functions/sleep.html
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
samlab
Гость
« Ответ #6 : 12-07-2010 22:58 » 

В *nix: man perlfunc
В винде - не знаю.
Или на оф.сайте Perl: http://perldoc.perl.org/functions/sleep.html

Благодарствую, только не совсем понятно, как использовать эту функцию применительно к моему коду... Если вам не составит труда, подскажите, куда вставить ее?
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 13-07-2010 06:53 » new

Вместо

Код:
threads->new(\&main) for 1 .. $threads;

вставь

Код:
for 1 .. $threads
{
  threads->new(\&main);
  sleep(3);
}

А вот это вообще не нужно:

Код:
sleep (20);
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
samlab
Гость
« Ответ #8 : 13-07-2010 13:19 » 

Код:
syntax error at C:\t.pl line 14, near "for 1"
syntax error at C:\t.pl line 18, near "}"
Execution of C:\t.pl aborted due to compilation errors.

« Последнее редактирование: 13-07-2010 17:01 от samlab » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 13-07-2010 18:19 » 

Код:
for (1 .. $threads)

Кстати, в "твоем" коде та же ошибка.

Вообще, если думаешь применять Perl, то учи его.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
samlab
Гость
« Ответ #10 : 13-07-2010 19:26 » 

Спасибо, буду стараться...
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines