in reply to Re^2: how to fork & join in tk?
in thread how to fork & join in tk?

Hi marioroy, the usefulness of your MCE module is starting to become apparent to me. I have one question. The code you gave for use on a non-threaded perl uses 'MCE::Shared' instead of threads:shared. How do you share the data in MCE::Shared between the sub-processes? Is it through a shared file descriptor?

I'm not really a human, but I play one on earth. ..... an animated JAPH

Replies are listed 'Best First'.
Re^4: how to fork & join in tk?
by marioroy (Prior) on Apr 24, 2017 at 18:42 UTC

    Hi zentara.

    The sharing aspect is done through shared socket handles constructed using socketpair.

    MCE::Shared::Server spawns a manager process. On the Windows platform or when threads is present; e.g. use threads, a thread is spawned instead. The data is managed by the shared-manager where it resides. MCE::Shared::Server is a two-part module. Shared objects are MCE::Shared::Object, the client facing package containing AUTOLOAD.

    A shared object is a blessed array reference containing ID and CLASS_NAME. To see the actual data, one must call export.

    use strict; use warnings; use feature 'say'; use MCE::Shared; use Data::Dumper; # first time, spawns the MCE::Shared::Server manager my $va1 = MCE::Shared->scalar('foo'); my $ar1 = MCE::Shared->array('a'..'c'); my $ha1 = MCE::Shared->hash('foo' => 'bar'); say Dumper $ha1; say Dumper $ha1->export; # construction via the TIE interface my $va2 = tie my $va, 'MCE::Shared', 'foo'; my $ar2 = tie my @ar, 'MCE::Shared', 'a'..'c'; my $ha2 = tie my %ha, 'MCE::Shared', 'foo' => 'bar'; say Dumper $ha2; say Dumper $ha2->export; # or Dumper tied(%ha)->export; __END__ $VAR1 = bless( [ 3, 'MCE::Shared::Hash' ], 'MCE::Shared::Object' ); $VAR1 = bless( { 'foo' => 'bar' }, 'MCE::Shared::Hash' ); $VAR1 = bless( [ 6, 'MCE::Shared::Hash' ], 'MCE::Shared::Object' ); $VAR1 = bless( { 'foo' => 'bar' }, 'MCE::Shared::Hash' );

    The upcoming 1.825 release can return an unblessed array or hash for later converting to JSON. From receiving the idea from 1nickt. Thank you.

    say Dumper $ha2->export({ unbless => 1 }); $VAR1 = { 'foo' => 'bar' };