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
| #!/usr/bin/perl
use strict;
use warnings;
use Tk;
use threads;
use threads::shared;
my %LesFonctions=("toto"=>\&toto);
my $ThreadTravail : shared;
my $TuerThread : shared;
my $nomFonction : shared;
my @ArgumentsThread : shared;
my $Thread = threads->create(\&MonThread);
$ThreadTravail=0;
$TuerThread=0;
my $mw = MainWindow->new;
$mw->title(" -------------- FREE ENERGY of BINDING -------------- beta version");
$mw->protocol('WM_DELETE_WINDOW' => sub{$Thread->detach();$TuerThread=1;sleep 1; exit});
$mw->Button(-text=>'toto', -command=> sub {&majThread})->pack();
MainLoop;
sub MonThread{
while (1) {
if ( $ThreadTravail == 1 ) {
$LesFonctions{$nomFonction}->(@ArgumentsThread);
$ThreadTravail = 0;
}
last if ( $TuerThread == 1 );
sleep 1;
}
return;
}
sub majThread {
$nomFonction ="toto";
@ArgumentsThread =();
$ThreadTravail = 1;
}
sub toto{
print "toto
est
content";
}
} |
Partager