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@listserv.ActiveState.com > To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs > _______________________________________________ ActivePerl mailing list ActivePerl@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs