sub logMergeManager { my $writeCounter = $_[0]; #a trick for implementing logarithmic merging $level = 1; for(my $ct = 2; $ct <= $writeCounter; $ct*=2) { if($writeCounter%$ct == ($ct -1) && $writeCounter > 0) { push(@forkArray, $level); push(@forkArray, $writeCounter); my $nextMerge = ($ct/2); push(@forkArray, $nextMerge); } else { last; } $level++; } if(fork()) { for(my $ct = 0; $ct <= $#forkArray; $ct+=3) { my $level = $forkArray[$ct]; my $mergeLast = $forkArray[$ct+1]; my $mergeFirst = $forkArray[$ct+2]; my $dir = '/data/c6/indexes/'; my $name2 = $dir.$level."_indexBlock_".$mergeLast; my $name1 = $dir.$level."_indexBlock_".$mergeFirst; exec "./indexes/merge2.pl $name1 $name2"; } } }