[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#167253: ITP: libfork-perl -- A fork(2) wraper for Perl



Steve Greenland <steveg@moregruel.net> writes:

> Uh, wait, no, now that I think about, it, the new way is not that much
> clearer and easier. Hmmm. Perhaps I'm not understanding the benefits of
> libfork-perl. Maybe if there was a place in the package description to
> summarize what features libfork-perl provides, and how it makes fork
> development[1] easier.

Well it was origninaly designed to run function many times in parallel
in background an get its return value.

imagine this small script:

sub b($) {
    return "<$_[0]>";
}

sub test_fork($) {
    my $args = shift;
    sleep $args->[2];
    return [$args->[0], b $args->[1]];
}

my $data = [
                # ID, data, sleep...
                [1 ,"Item 1", 1],
                [2 ,"Item 6", 6],
                [3 ,"Item 2", 2],
                [4 ,"Item 5", 3],
                [5 ,"Item 3", 5],
                [6 ,"Item 4", 4],
                ];

my $values = fork_it {
        fct => \&test_fork,
        args => $data,
        max_children => 6,
        timeout => 10,
        };
 my $sorted_values = [ sort { $a->[0] cmp $b->[0] } (@$values) ];
 print Dumper $sorted_values;


will return 

$VAR1 = [
          [
            1,
            '<Item 1>'
          ],
          [
            2,
            '<Item 6>'
          ],
          [
            3,
            '<Item 2>'
          ],
          [
            4,
            '<Item 5>'
          ],
          [
            5,
            '<Item 3>'
          ],
          [
            6,
            '<Item 4>'
          ]
        ];




-- 
Sebastien J. Gross                |                   Debian GNU/Linux 
sjg@debian.org                    |              http://www.debian.org
GPG: 1024g/AF0DDC9A AB35 1FFB 1268 56C0 452B  302E 2A25 8421 53BB A490



Reply to: