in reply to Re^3: removing all threads..
in thread removing all threads..
but I've found it difficult to do in the past without Threads::Shared which has some serious limitations.
Hm. Seems simple enough to me?:
#! perl -slw use strict; use threads; use threads::shared; my $sem :shared; sub tprint { lock $sem; print @_; } my $dieNow :shared = 0; $SIG{INT} = sub { tprint 'sigint seen'; $dieNow = 1; return; }; sub thread { my $tid = threads->tid; my $delay = int rand 10; my $next = time + $delay; while( sleep 1 ) { last if $dieNow; redo unless time > $next; tprint "[$tid] ping"; $next = time + $delay; } tprint "$tid] ending"; } my @threads = map async( \&thread ), 1 .. 10; sleep 1 until $dieNow; $dieNow = 1; $_->join for @threads;
Outputs:
C:\test>1007974 [3] ping [9] ping [1] ping [3] ping [2] ping [4] ping [3] ping [1] ping [9] ping [5] ping [3] ping [6] ping [10] ping sigint seen [3] ping 7] ending 2] ending 5] ending 8] ending 1] ending 9] ending 4] ending 6] ending 10] ending 3] ending
With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^5: removing all threads..
by Tommy (Chaplain) on Dec 10, 2012 at 22:24 UTC | |
by BrowserUk (Patriarch) on Dec 10, 2012 at 23:30 UTC | |
by Tommy (Chaplain) on Dec 10, 2012 at 23:58 UTC | |
by Tommy (Chaplain) on Dec 11, 2012 at 14:47 UTC | |
by BrowserUk (Patriarch) on Dec 11, 2012 at 18:04 UTC | |
by Tommy (Chaplain) on Dec 12, 2012 at 04:44 UTC | |
by Tommy (Chaplain) on Dec 10, 2012 at 22:31 UTC |
In Section
Seekers of Perl Wisdom