#!/usr/bin/perl use warnings; use strict; use threads 'exit' => 'threads_only'; print "I'm the parent pid-> $$\n"; my $thr = threads->new(\&sub1); #my $thr1 = threads->new(\&sub2)->detach; # issues a warning on kill my $thr1 = threads->new(\&sub2); for(1..15){ print "$_\n"; if( $_ == 5 ){ $thr->kill('KILL')->join } if( $_ == 10 ){ $thr1->kill('KILL')->join } sleep 1; } exit; sub sub1{ my $myobject = threads->self; my $mytid= $myobject->tid; $SIG{'KILL'} = sub{ print "tid $mytid exiting\n"; threads->exit() }; print "In the thread $myobject tid->$mytid \n"; my $count = 0; while(1){ $count++; print "\t\t\t$mytid -> $count\n"; sleep 1; } } sub sub2{ my $myobject = threads->self; my $mytid= $myobject->tid; $SIG{'KILL'} = sub{ print "tid $mytid exiting\n"; threads->exit() }; print "In the thread $myobject tid->$mytid \n"; my $count = 0; while(1){ $count++; print "\t\t\t\t\t$mytid -> $count\n"; sleep 1; } }