LINUX.ORG.RU

Perl Threads or fork? ПЛИЗЗЗ НЕЛПП!!!!! :)))


0

0

Подскажите плз, программист из меня некудышный, но нуна решить такую проблему: перл прога с графическим интерфейсом (Tk), которая отправляет пакеты через сеть, и нужно чтоб при нажатии на кнопку, допустим start, отправлялись пакеты и рядом в Label отображался счетчик пакетов, дело в том что когда я прикрутил отправку пакетов к кнопке, то по нажатию на нее залипал весь графический интерфейс, до тех пор пока цикл отправки пакетов не закончится, с этим справился создав дочерний процесс, через fork(т к с Нитями (Threads) никогда не работал), НО осталось прикрутить счетчик, и как бы я не извращался он не хочет записывать в Label инфу до тех пор пока не выполнит цикл, т е не отправит все пакеты....

код кнопки и лабел такой :

sub buttom1 { $child = fork; if ($child == 0){ $packet = new Net::RawIP ( { tcp=>{} } ); $packet->set ({tcp => {dest => xx,source => xx, syn => 1, }}); foreach (1..5){ $|=1; $packet->set({ip=>{daddr => '10.x.x.x',saddr => '10.x.x.x'}}); $packet->send ( 1, 1 ); $count =$count + 1; $e2->configure(-text => "$count"); }}}

где $e2 это label

Помогите плз ,очень нужно, просто позарез горла, ЗАРАНЕЕ БЛАГОДАРЕН :))

anonymous

Ответ на: комментарий от vilfred

дык он от туда и апдейтится, увы не понимаю, по логике должно все работать, но не пашет однако:))) в цыкле подпрограммы есть строка которая апдейтит лабел после каждого прохода, но почемуто он выводит только конечный результат подсчета пакетов, а должен выводить после отправки каждого пакета :((

anonymous
()

На tcl/tk это решается с помощюб вызова по нажатию рекурсивной функции, которая сначала вызывает один шаг, а затем сама себя. При этом можно отслеживать значение какой-либо переменной, и в зависимости от этого прерываться. На перле имхо должно быть так же, ибо tk похожи

Zert
()

> он не хочет записывать в Label инфу до тех пор пока не выполнит цикл, т е не отправит все пакеты....

И правильно. В TK это делается командой update. Как оную выдать из Перла -- не знаю, но её квак-то надо вставить в цикл после configure.

С уважением -- Смоляное Чучелко

anonymous
()

В дабавление к предыдущему: и всё равно глюки пойдут, имхо. Не рассчитаны, as я понимаю, окна на параллельный доступ -- что нитями, что форками. Посылай в очередь сообщение -- чего-то типа send.

С уважением -- Смоляное Чучелко

anonymous
()
Ответ на: комментарий от anonymous

ААААААААА СУПЕРРРРРРР!!!!!!!! ЗАРАБОТАЛО!!!!!!!!!!! ОГРОМНОЕ ПАСИБО ВСЕМ УЧАВСТВУЮЩИМ, Update в tk великая весч , с fork все заработало , ЙЕЕЕЕЕСССССССС!!!!! ура -ура- ура !!!!!!!!!!

iliz
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.