Hallo,ich möchte mehrere tasks parallel laufen lassen.
Alle Tasks benötigen eine (unabhängige) Schleife um die Arbeit zu vollrichten. Deswegen habe ich einen Thread erzeugt und starte mehrere instanzem davon.
Jeder thread soll seinenStatus in ein gemeinsames UI melden.
Hier ist mein (verkürztes) Script
use strict;
use Tk;
use Threads;my $name_A = "Init thread A";
my $name_B = "Init thread B";
my $name_C = "Init thread C";
my $name_D = "Init thread D";
my $TK_top = MainWindow->new();
my $TK_text_A_name = $TK_top->Label( -textvariable => \$name_A )->form(-left => ['%0', '2'], -top => ['%0', '2'], -right => ['%50', '-8']);
my $TK_text_B_name = $TK_top->Label( -textvariable => \$name_B)->form(-left =>['%50', '8'], -top => ['%0', '2'], -right => ['%100', '-120']);
my $TK_text_A_log = $TK_top->Text()->form(-left => '%0', -top => $TK_text_A_name, -bottom => '%50', -right => ['%50', '0']);
my $TK_text_B_log = $TK_top->Text()->form(-left => ['%50', '0'], -top => $TK_text_A_name , -bottom => '%50', -right => '%100');
my $TK_text_C_name = $TK_top->Label( -textvariable => \$name_C )->form(-left => ['%0', '2'], -top => [$TK_text_A_log, , '5'], -right => ['%50', '-8']);
my $TK_text_D_name = $TK_top->Label( -textvariable => \$name_D )->form(-left =>['%50', '8'], -top => [$TK_text_A_log, , '5'], -right => '%100');
my $TK_text_C_log = $TK_top->Text()->form(-left => '%0', -top => $TK_text_C_name, -bottom => '%100', -right => ['%50', '0']);
my $TK_text_D_log = $TK_top->Text()->form(-left => ['%50', '0'], -top => $TK_text_C_name , -bottom => '%100', -right => '%100');
sub myThread
{
my @args = @_;
my $textbox = @args[0];
my $lablename = \@args[1];
my $filename = @args[2];
my $line;
$name_A = "DOES NOT WORK";
$lablename = "DOES NOT WORK EITHER";
$textbox->insert("end", "Some message\n");
$textbox->insert("end", $filename);
}
$name_A = "About to start thread A";
$name_B = "About to start thread B";
$name_C = "About to start thread C";
$name_D = "About to start thread D";
my $threadA = threads->create('myThread', $TK_text_A_log, \$name_A, 'This is thread A');
my $threadB = threads->create('myThread', $TK_text_B_log, \$name_B, 'This is thread B');
my $threadC = threads->create('myThread', $TK_text_C_log, \$name_C, 'This is thread C');
my $threadD = threads->create('myThread', $TK_text_D_log, \$name_D, 'This is thread D');
MainLoop();
exit;
Es funktioniert leider nicht ganz wie erwartet.
Die threads können in ihre Meldungen in die Textboxen schreiben (mittels $textbox).
Allerdings funktioniert es nicht mit den textvariablen der Labels.
Hat jemand eine Idee???
Vielen Dank,
Thorsten
Datum: 03.04.2009-13:52
