RE: threads package missing is_running
by webmaster other posts by this author
May 2 2008 9:08AM messages near this date
RE: threads package missing is_running
|
RE: threads package missing is_running
I'd love it if I could just upgrade perl, but corporate bureaucracy sucks
and the new versions need approval for security purposes. I initially
tried it with 5.6.1 with less success, and 5.8.0 seems to be very close
less the is_running issue. All I really need is some way to determine if
the thread is still running even if it's checking if the process id
exists. When it is, I want to SIGUSR1 the thread.
'threads' is a standard module, so I have no clue why it's having amnesia.
The module is found at C:/Perl/lib/threads.pm and not part of the ppm.
Here is a short example of threads I'm testing:
<xmp>
# Test Threads
use threads;
use threads::shared;
use strict;
use vars qw ($counter $thr);
Log ("Starting Thread Test");
$thr = threads-> create (\&ChildThread, 0, 1);
$counter = 0;
while ($counter++ < 10) {
Log ("This is the main thread (".$counter." sec)");
sleep (1);
}
# The following gives an error that is_running.al is missing.
# Tried threads-> list (threads::running) to search and compare: gave
bareword error.
# Tried "$thr-> is_running" without success: also said is_running.al missing.
while ($thr-> is_running()) {
Log ("Killing thread.");
$thr-> kill('SIGUSR1');
sleep (4);
}
Log ("Thread killed.");
# Functions
sub Log { my( $Message ) = @_; print $Message."\n"; }
sub ChildThread {
my ($counter, $to_screen) = @_;
my $count = 0;
our $thread_term = 0;
$SIG{'SIGUSR1'} = sub { Log('Received user1 notice.'); $thread_term =
1; return 0; };
$SIG{'KILL'} = sub { Log('Received kill notice.'); $thread_term = 1;
return 0; };
while (!($thread_term)) {
Log ('This is the child thread ('.($count++ * 2).' sec)');
sleep (2);
}
Log ('Thread has ended.');
}
</xmp>
> > Hi All,
> >
> > I'm attempting to use the 'threads' module in ActivePerl 5.8.0 build
> > 805.
> > Everything seems to work until I attempt to shut the process down
> > gracefully. When I call is_running() the whole thing crashes with
> > the following output (main thread starts the shutdown after 10
> > seconds):
> >
> > Starting Thread Test
> > This is the main thread (1)
> > This is the child thread (0)
> > This is the main thread (2)
> > This is the main thread (3)
> > This is the child thread (1)
> > This is the main thread (4)
> > This is the main thread (5)
> > This is the child thread (2)
> > This is the main thread (6)
> > This is the main thread (7)
> > This is the child thread (3)
> > This is the main thread (8)
> > This is the main thread (9)
> > This is the child thread (4)
> > This is the main thread (10)
> > Can't locate auto/threads/is_running.al in @INC (@INC contains:
> > C:/Perl/lib C:/P
> > erl/site/lib .) at thread_test.pl line 26 A thread exited while 2
> > other threads were still running.
> >
> > I'm including the module as follows:
> >
> > use threads;
> > use threads::shared;
> > use strict;
> >
> > Any idea why it can't find that function?
>
> How are you calling it?
>
> A small self contained example script that demonstrates the problem
> would help.
>
> Note that your Perl version is pretty old. Perl's threading was not
> nearly as mature as it is now (and some would say that it is still not
> mature enough for production use). I recommend installing a much later
> version.
>
> HTH
>
> --
> Brian Raven
>
> =========================================
> Atos Euronext Market Solutions Disclaimer
> =========================================
>
> The information contained in this e-mail is confidential and solely for
> the intended addressee(s). Unauthorised reproduction, disclosure,
> modification, and/or distribution of this email may be unlawful.
> If you have received this email in error, please notify the sender
> immediately and delete it from your system. The views expressed in this
> message do not necessarily reflect those of Atos Euronext Market
> Solutions.
>
> Atos Euronext Market Solutions Limited - Registered in England & Wales
> with registration no. 3962327. Registered office address at 25 Bank
> Street London E14 5NQ United Kingdom.
> Atos Euronext Market Solutions SAS - Registered in France with
> registration no. 425 100 294. Registered office address at 6/8 Boulevard
> Haussmann 75009 Paris France.
>
> L'information contenue dans cet e-mail est confidentielle et uniquement
> destinee a la (aux) personnes a laquelle (auxquelle(s)) elle est adressee.
> Toute copie, publication ou diffusion de cet email est interdite. Si cet
> e-mail vous parvient par erreur, nous vous prions de bien vouloir prevenir
> l'expediteur immediatement et d'effacer le e-mail et annexes jointes de
> votre systeme. Le contenu de ce message electronique ne represente pas
> necessairement la position ou le point de vue d'Atos Euronext Market
> Solutions.
> Atos Euronext Market Solutions Limited Société de droit anglais,
> enregistrée au Royaume Uni sous le numéro 3962327, dont le siège social se
> situe 25 Bank Street E14 5NQ Londres Royaume Uni.
>
> Atos Euronext Market Solutions SAS, société par actions simplifiée,
> enregistré au registre dui commerce et des sociétés sous le numéro 425 100
> 294 RCS Paris et dont le siège social se situe 6/8 Boulevard Haussmann
> 75009 Paris France.
> =========================================
>
> _______________________________________________
> ActivePerl mailing list
> ActivePerl@[...].com
> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
>
_______________________________________________
ActivePerl mailing list
ActivePerl@[...].com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Thread:
webmaster
Brian Raven
Brian Raven
Brian Raven
webmaster
Brian Raven
Brian Raven
Bill Luebkert
Andy Bach
webmaster
Andy Bach
Lyle - CosmicPerl.com Support
webmaster
Lyle - CosmicPerl.com Support
|