My problem is that threads::shared can't share complex data structures and objects. How can this be solved?
I don't advocate this solution nor am I proud of it, but ...
use threads;
use threads::shared;
use Devel::Pointer;
{
package foo;
sub new { bless [rand 100] }
sub blah { print "in blah()\n" }
}
my $obj = foo->new();
$obj->blah();
print "$obj: @$obj\n";
my $o : shared = address_of($obj);
$t = threads->new(sub {
print "\tin thread\n\t";
my $obj2 = deref($o);
$obj2->blah();
print "\t$obj2: @$obj2\n";
});
$t->join;
__output__
in blah()
foo=ARRAY(0x804beec): 43.5769482822256
in thread
in blah()
foo=ARRAY(0x804beec): 43.5769482822256
Now just look into the little memory-wiping stick ...
*flash*.
HTH
_________
broquaint