in reply to Re^5: Why won't this Deadlock?
in thread Why won't this Deadlock?

It's a display model, it doesn't work the way it's intended to (yet!).

#!/usr/bin/perl use strict; use warnings; use v5.20; # oh yeah package Stash; # Stash = Symbol Table Hash sub steal { # hosed logic here #my ($from, $to) = @_ || ( shift || 'main', (caller)[0] ); my ( $from, $to ) = @_; no strict 'refs'; return map { s/\\/\\\\/; qq!\$_->{$$}{'$_'} = qq|*{'${to}::$_'} = *{'${from}::$_'}| ! } keys %{"${from}::"}; } 1; package My::Hash; use MCE::Shared::Hash; use base 'MCE::Shared::Hash'; sub pipeline_eval { my $self = shift; local $_ = $self; while (@_) { #say " eval ", shift->[0]; eval shift->[0]; } return; } 1; package main; use Data::Dumper; use MCE::Shared; tie my %t, 'MCE::Shared', { module => 'My::Hash' }; tied(%t)->pipeline_eval( map { [$_] } Stash::steal( "main", "My::Hash" ) # steal from, t +o ); print Dumper( tied(%t)->export( { unbless => 1 } ) );

Replies are listed 'Best First'.
Re^7: Why won't this Deadlock?
by marioroy (Prior) on Jul 13, 2017 at 03:29 UTC

    Hi Jambo Hamon,

    I'm afraid that MCE::Shared may not support the things you'd like to do with it. The reason is that serialization may fail depending on what's inside the package / hash. From reviewing the code, $_-> must be backslashed \$_-> near the beginning of each string for pipeline_eval to work.

    Regards, Mario