http://www.perlmonks.org?node_id=1065776


in reply to Re^2: Threads memory consumption
in thread Threads memory consumption

It is possible to pass result to parent process, and is quite easy. You can use Parallel::ForkManager for example:
use 5.010; use strict; use warnings; use Parallel::ForkManager; use Data::Printer; my $pm = Parallel::ForkManager->new(2); $pm->run_on_finish( sub { # result from the child will be passed as 6th arg to callback my $res = $_[5]; p $res; } ); for (1..3) { $pm->start and next; # from here and till $pm->finish child process running # do something useful and store result in $res my $res = { aaa => $_ }; # this will terminate child and pass $res to parent process $pm->finish(0, $res); } $pm->wait_all_children;

Replies are listed 'Best First'.
Re^4: Threads memory consumption
by mojo2405 (Acolyte) on Dec 06, 2013 at 12:16 UTC
    Thanks alot ! used this method - and everything works for me great now. I have a question about this method - Can I have some shared data between the child forks ?
      Yes you can, see IPC::Shareable and IPC::ShareLite, but I don't recommend you to use these -- refactor your program so it wouldn't require shared variables, or use some message passing module instead.
        Can you recommend on a message passing module I can use ?
        Hey, Do you know if I can share a hash ? or even an object ? I want to share and lock an object that exist inside a hash - if accessed.. Thanks