C:\Users\perluser09\Desktop\Perl>perl lock.pl ... Thread 1: Doing SNMP GET for 2.1.1.1:1.3.1.8.47 Thread 1: Doing SNMP GET for 2.1.1.1:1.3.1.8.46 Thread 1: Doing SNMP GET for 2.1.1.1:1.3.1.8.45 Thread 2: Doing SNMP GET for 2.1.1.1:1.3.1.8.40 Thread 1: Doing SNMP GET for 2.1.1.1:1.3.1.8.44 Thread 2: Doing SNMP GET for 2.1.1.1:1.3.1.8.39 Thread 2: Doing SNMP GET for 2.1.1.1:1.3.1.8.38 Thread 1: Doing SNMP GET for 2.1.1.1:1.3.1.8.43 ..... Perl exited with active threads 0 running and unjoined 2 finished and unjoined 0 running and detached #### C:\Users\perluser09\Desktop\Perl>perl lock.pl > threadinfo.txt .... Thread 1: size of the array is 199 Thread 1: Doing SNMP GET for 2.1.1.1:1.3.1.8.200 Thread 1: Doing SNMP GET for 2.1.1.1:1.3.1.8.199 Thread 1: Doing SNMP GET for 2.1.1.1:1.3.1.8.198 Thread 1: Doing SNMP GET for 2.1.1.1:1.3.1.8.197 Thread 1: Doing SNMP GET for 2.1.1.1:1.3.1.8.196 Thread 1: Doing SNMP GET for 2.1.1.1:1.3.1.8.195 Thread 1: Doing SNMP GET for 2.1.1.1:1.3.1.8.194 Thread 1: Doing SNMP GET for 2.1.1.1:1.3.1.8.193 Thread 1: Doing SNMP GET for 2.1.1.1:1.3.1.8.192 Thread 1: Doing SNMP GET for 2.1.1.1:1.3.1.8.191 ...... Perl exited with active threads: 0 running and unjoined 2 finished and unjoined 0 running and detached #### #create the array with the ip:OID use warnings; use strict; use Thread qw(async); use threads::shared; share (my @array); @array = qw/2.1.1.1:1.3.1.8.1 2.1.1.1:1.3.1.8.2 2.1.1.1:1.3.1.8.3 2.1.1.1:1.3.1.8.4 2.1.1.1:1.3.1.8.5 2.1.1.1:1.3.1.8.6 2.1.1.1:1.3.1.8.7....sequence continues upto....2.1.1.1:1.3.1.8.199 2.1.1.1:1.3.1.8.200/; my $thr1 = async { while($#array > 0) { print "Thread 1: size of the array is $#array\n"; my @my_oids; { lock (@array); # Block until we get access to $a for(my $i=0;$i<10;$i++) { push (@my_oids, (pop @array)); } } foreach(@my_oids) { print "Thread 1: Doing SNMP GET for $_\n" if (defined($_)); } } }; my $thr2 = async { while($#array > 0) { print "Thread 2: Size of the array is $#array\n"; my @my_oids; { lock (@array); # Block until we get access to $a for(my $i=0;$i<10;$i++) { push (@my_oids, (pop @array)); } } foreach(@my_oids) { print "Thread 2: Doing SNMP GET for $_\n" if (defined($_)); } } }; $thr1->join; $thr2->join;