Het volgende probleem;
Op het moment dat ik SIG(INT) stuur (CTRL+C bijv.) wil ik dat de thread zijn loopje afmaakt en daarna stopt met draaien;
Maar dit werkt dus niet
De gestartte thread blijft gewoon draaien. Ik heb de manual er al op nageslagen, niets gevonden.. Kan iemand mij helpen?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| $blnRunning = 1;
# Thread sub
sub doPoll {
my ($intDelay) = @_;
if ($intDelay < 5) {
$intDelay = 5;
}
# Start main loop
while ($blnRunning) {
print "-> Polling ...\n";
sleep $intDelay;
}
print "-> Polling stopped!\n";
}
# Start thread for monitoring
$objPollThread = threads->new(\&doPoll, $intDelay); |
Op het moment dat ik SIG(INT) stuur (CTRL+C bijv.) wil ik dat de thread zijn loopje afmaakt en daarna stopt met draaien;
code:
1
2
3
4
5
6
7
8
9
10
11
12
| # Closes current server and bails out
sub doQuit() {
# Close listener
print "-> Waiting for destruction\n";
$blnRunning = 0;
sleep 10;
print "-> Server destroyed\n";
exit;
}
$SIG{INT} = \&doQuit; |
Maar dit werkt dus niet