Hallo,
hier ist ein Beispiel mit Tk und threads, vielleicht hilft es dir:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
use warnings;
use strict;
use threads;
use threads::shared;
my $var =1;
share $var;
my $data;
share $data;
my @threads;
push @threads, threads->create(\&thread);
push @threads, threads->create(\&tk_thread);
$_ -> join for @threads;
print "threads joined\n";
sub thread{
my $counter = 0;
while (1){
if ($var==1){
print "thread doing work\n";
{
lock $data;
$data = $counter++;
}
sleep (1);
}elsif($var == 0){
print "thread waiting\n";
sleep(1);
}else{
print "thread finished\n";
return;
}
}
}
sub tk_thread{
require Tk;
Tk->import;
my $mw = tkinit();
my $text = $mw->Text->pack;
$mw->Button(-text => 'start_stop',
-command => sub {{lock $var;
$var = $var? 0 : 1
}
},
)->pack;
$mw->Button(-text => 'beenden',
-command => sub{{lock $var;
$var = -1;
$mw->destroy;}
},
)->pack;
$mw->repeat(100,sub{{lock $data;
$text->insert('end', $data."\n") if $data;
$data = '';
}
} );
MainLoop();
}
Grüße,