#!/usr/bin/perl use threads; use threads::shared; my $foo : shared; $thr = threads->new(\&sub1, "THREAD1 :"); $thr2 = threads->new(\&sub2, "THREAD2 :"); @ReturnData = $thr->join; print @ReturnData; @ReturnData = $thr2->join; print @ReturnData; sub sub1{ my $i; { lock $foo; $foo=0; } for ($i=0;$i<10000;$i++) { print $_[0].$i."\n"; } { lock $foo; $foo=1; } print " Final value :$foo\n"; } sub sub2{ my $i; for ($i=0;$i<5000;$i++) { print $_[0].$i."\n"; } $out = 1; while ($out) { { lock $foo; if ($foo == 1) { $out = 0; } } } for ($i=5000;$i<10000;$i++) { print $_[0].$i."\n"; } }