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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Perl + Tk + потоки = проблема, Есть ли способы решения? 
:(
    Опции темы
BlindBandiit
Дата 11.5.2013, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Использую Perl Tk заотел на днях использовать многопоточность use threads::shared; оказалось что это не возможно :(
Есть ли способы решения?
PM MAIL   Вверх
alezzz
Дата 11.5.2013, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


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

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



Делал многопоточное приложение на threads с Tkx интерфейсом. Были какие-то проблемы, но уже немогу вспомнить какие. Посмотрел в коде, создаю необходимое количество потоков до MainLoop и передаю им данные через shared переменные. А что не получается в Tk, может на Tkx попробовать?
PM MAIL   Вверх
BlindBandiit
Дата 14.5.2013, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(alezzz @ 11.5.2013,  08:19)
Делал многопоточное приложение на threads с Tkx интерфейсом. Были какие-то проблемы, но уже немогу вспомнить какие. Посмотрел в коде, создаю необходимое количество потоков до MainLoop и передаю им данные через shared переменные. А что не получается в Tk, может на Tkx попробовать?

Cтрано что у вас так получилось просто прочел статью там в самом начале написано что это не прокатит
http://habrahabr.ru/post/65592/ поверил наслово и даже не пробовал Tkx


Только попробовал  в тk такой  подход сразу выбивает приложение


Это сообщение отредактировал(а) BlindBandiit - 14.5.2013, 12:01
PM MAIL   Вверх
alezzz
Дата 14.5.2013, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


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

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



Для GUI-программ сначала рисую интерфейс в ActiveState GUI Builder, в результате получаю .pm с use Tkx вначале и всем что непосредственно связано с интерфейсом, и .pl, где логика программы, весь исходник конечно кидать не буду, вот примерно его суть:
Код

...
use threads;
use threads::shared;

...

my $items :shared;
my @urls :shared; # тут задания для потоков, каждый смотрит в массив если ли для него что-то

...

my @threads;
foreach my $num (0..9){
    push @threads, threads->create(\&getfirm, $num);
}

...

# далее сабы на кнопки и т.д., на кнопку Старт написан какой-то ###код, который постепенно кидает данные в @url, а потоки в хеш-референс $items возвращают результат

...

sub getfirm{
    my $num = shift;

    ...
    # тут то, что должен сделать поток, в цикле проверяет есть ли задание в @urls
}

...

# далее мне тоже GUI Builder помог
ParserToXML_gui::userinit() if defined &ParserToXML_gui::userinit;
our($top) = Tkx::widget->new('.');
ParserToXML_gui::ui($top);
ParserToXML_gui::run() if defined &ParserToXML_gui::run;

# Собстенно запускаем интерфейс
Tkx::MainLoop();


На ликусах не проверял, человеку нужен было под Windows.

Update
smile не знал, цензура работает, ###код -- это плохой код

Это сообщение отредактировал(а) alezzz - 14.5.2013, 12:31
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: GUI | Следующая тема »


 




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


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

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