Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> многопоточность, файл 
:(
    Опции темы
CiklodoL
Дата 17.8.2007, 02:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 11.8.2007

Репутация: нет
Всего: нет



Здравствуйте, у меня следующая проблема при многопоточности: при чтение из файла в цикле дескриптор файла выдаёт пустое значение, - как я понял IO не успевает за потоками и циклом в них, если файл загрузить в массив и потом снимать из него то всё нормально работает, но этот вариант не подходит из за размеров файла, собственно вопрос - как.. сделать чтобы чтение успевало за циклом

привожу сам саб многопоточности:
sub Thr
{
while ($a){
$p = <file>;
...тут идёт отправка запроса и считывание ответа...
}
PM MAIL   Вверх
shamber
Дата 17.8.2007, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



сделать задержку?
 
Код

select(undef,undef,undef,0.1)

PM MAIL Jabber   Вверх
CiklodoL
Дата 17.8.2007, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 11.8.2007

Репутация: нет
Всего: нет



если сделать задержку, то скорость упадёт...

Спасибо, я сам разобрался, сделал сначала заполнение массива частью данных из файла, затем когда массив опустевает он снова заполняется и потоки вновь запускаются

Это сообщение отредактировал(а) CiklodoL - 17.8.2007, 14:06
PM MAIL   Вверх
CiklodoL
Дата 24.8.2007, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 11.8.2007

Репутация: нет
Всего: нет



Всем доброе время суток, у меня возник еще один вопрос: как убить поток?

привожу код: тут собственно создаются потоки, но когда подключится не удаётся, то вылетает Thread 13 terminated abnormally:.. вопрос - как корректно завершить поток в таком случае?

for( 0..$thr ) { $trl[$_] = threads->create( \&Flood, $_ ); }
for( 0..$thr ) { $trl[$_]->join; }

sub Flood
{
$sock = IO::Socket::INET->new(PeerAddr => $host,
                                  PeerPort => $port,
                                  Proto => 'tcp') || (а тут в случае если не удалось подключиться, то поток должен убиться)

... ... ....
}

поставил || return 0, ошибки не вылетают но при это потоки которые не смогли подключиться будут висеть в памяти.... ?

Это сообщение отредактировал(а) CiklodoL - 24.8.2007, 18:56
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0915 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.