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' };
In reply to Re^4: how to fork & join in tk?
by marioroy
in thread how to fork & join in tk?
by redss
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |