# Send a signal to a thread $thr->kill('SIGUSR1'); #### #!/usr/bin/perl use warnings; use strict; use threads; print "I'm the parent pid-> $$\n"; my $thr = threads->new(\&sub1); my $thr1 = threads->new(\&sub2)->detach; for(1..15){ print "$_\n"; if( $_ == 5 ){ $thr->kill('SIGUSR1') } if( $_ == 10 ){ $thr1->kill('SIGKILL') } sleep 1; } exit; sub sub1{ # uncommenting the following stops the segfault # but still crashes the program #local $SIG{'SIGUSR1'} = sub{ print "yikes\n" }; my $myobject = threads->self; my $mytid= $myobject->tid; print "In the thread $myobject tid->$mytid \n"; my $count = 0; while(1){ $count++; print "\t\t\t$mytid -> $count"; sleep 1; } } sub sub2{ my $myobject = threads->self; my $mytid= $myobject->tid; print "In the thread $myobject tid->$mytid \n"; my $count = 0; while(1){ $count++; print "\t\t\t\t\t\t$mytid -> $count"; sleep 1; } }