Schrift
[thread]4710[/thread]

TK und Multithreading



<< >> 4 Einträge, 1 Seite
Gast Gast
 2004-01-28 02:42
#46798 #46798
Moin zusammen,

schon länger kämpfe ich mit einem Problem und finde keine richtigen Tipps im Netz. Auch das Buch Mastering Perl/Tk konnte mir nicht helfen.
Ich schreibe an einem Perl-Skript das Dateien verarbeitet. Die Verarbeitung geschieht in einem eigenen Arbeits-Thread (dieser wird zur Laufzeit erzeugt). Davor liegt ein TK-GUI. Der Benutzer soll nun über den Fortlauf des Arbeits-Threads mittels eines Statusfensters mit Progressbar und Statustext informiert werden. Ich kenne bereits die Lösung, über die ->after(...) Methode im GUI den Zustand des Threads (d.h. dessen Fortschritt) immer wieder in zeitlichen Intervallen abzufragen und dann das Fenster upzudaten. Dies möchte ich aber nicht, sondern eine Lösung, das der Arbeits-Thread dem Fenster "bescheid sagt" wenn sich etwas verändert hat, z.B. durch Events.

Hat jemand Ahnung wie so etwas geht?
(Links, Tutorials, Tipps)

Würde mich über Hilfe sehr freuen...

Schönen Gruß,

fwefers
ptk
 2004-01-28 11:44
#46799 #46799
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Reichen dir ein paar Stichworte? Die da waeren: Tk::fileevent, perlipc.pod (insbesondere fork und pipe), die Perl/Tk-FAQ zum Thema fork (zu finden auf www.perltk.org), diverse Artikel in comp.lang.perl.tk, Tk800.025 statt Tk804.025 verwenden. Einen schoenen Artikel dazu kenne ich nicht.
Crian
 2004-01-28 12:05
#46800 #46800
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
Vielleicht reicht es ja auch einfach schon aus, Events auszulösen, die man an die Tk-Oberfläche bindet? Aber man hat ja zwei verschiedene Prozesse.

Ich hab gerade mal in die perldoc zu Tk::fileevent reingelesen, klingt gut:

Quote
File event handlers are most commonly used to allow data to be
received from another process on an event-driven basis, so that the
receiver can continue to interact with the user while waiting for the
data to arrive.


Wie eigentlich immer ist ptk's Antwort sehr gut und man kann wiedermal etwas neues daraus lernen :-)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Froschpopo
 2005-04-05 11:23
#46801 #46801
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
es gibt noch nen Trick !
Das Kind mit CORE::exit töten, danach hats bei mir auch wieder geklappt !
<< >> 4 Einträge, 1 Seite



View all threads created 2004-01-28 02:42.