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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> lwp : shared 
:(
    Опции темы
Валерия
Дата 19.9.2010, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Почему такое не работает? Разве через shared нельзя расшарить кроме переменной или масива еще и объект?
Код

use LWP::UserAgent;
use threads;
use threads::shared;

my $ua : shared = LWP::UserAgent->new();



my @threads;
for my $i (1..10) {
    push @threads, threads->create(\&mythread, $i);
}
foreach my $thread (@threads) {
    $thread->join();
}


<STDIN>;


sub mythread {
    $content = $ua->get("http://vingrad.ru")->content;
    print $content;
}

PM MAIL   Вверх
DurRandir
Дата 19.9.2010, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Расшарить - можно. Но не так) Да и очень многие не-pure perl модули с потоками не дружат (ТАК - точно не дружат, если создать новый объект в каждом потоке - могут и заработать).

PS: про "не так": threads::shared exports a version of bless() that works on shared objects such that blessings propagate across threads.
PPS: если задача стоит "получить одновременно несколько страниц", то потоки - неправильный инструмент. Смотрите в сторону AnyEvent::HTTP.
PM   Вверх
Валерия
Дата 19.9.2010, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Про "не так" немного не поняла)
Мне именно подобным способом расшарить нужно)
PM MAIL   Вверх
DurRandir
Дата 20.9.2010, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Мне очень интересно - зачем? Т.е. какую задачу вы этим пытаетесь решить?

Это сообщение отредактировал(а) DurRandir - 20.9.2010, 00:56
PM   Вверх
Валерия
Дата 20.9.2010, 07:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



1) Нужны общие куки между всеми потоками
2) Однозначно будет меньше расход оперативы, а у меня чахленький сервер, поэтому если я такое проверну, смогу запустить больше потоков
PM MAIL   Вверх
shamber
Дата 20.9.2010, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Валерия, а общие куки в файлик скинуть и оттуда прочитать разве нельзя?
PM MAIL Jabber   Вверх
Валерия
Дата 20.9.2010, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(shamber @  20.9.2010,  09:13 Найти цитируемый пост)
Валерия, а общие куки в файлик скинуть и оттуда прочитать разве нельзя? 

Можно конечно, и если бы мне подходило такое решение, то я бы про него и спрашивала (или не спрашивала бы). А топик вообщем-то про общие объекты между потоками, наравне с общими переменными и массивами, и в данном случае просто привела пример с LWP.

Это сообщение отредактировал(а) Валерия - 20.9.2010, 12:34
PM MAIL   Вверх
gcc
Дата 20.9.2010, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

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



Валерия, еще есть LWP::Parallel http://search.cpan.org/search?query=LWP%3A...el&mode=all
там не многопоточнось, а как-то по другому работает...
PM WWW ICQ Skype GTalk Jabber   Вверх
DurRandir
Дата 20.9.2010, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ааа, вы считаете, что, запустив 20 потоков, у вас будет небольшой расход памяти? Вынужден вас разочаровать. Ну и таким способом ничего не выйдет. Далеко не факт, что LWP - потокобезопасный класс (хинт - читайте про thread-safety & reentrant methods, если хотите вызывать методы над общим объектом).
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


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

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


 




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


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

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