Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: How to share huge data structure between threads?

by broquaint (Abbot)
on Jan 10, 2003 at 15:30 UTC ( [id://225824]=note: print w/replies, xml ) Need Help??


in reply to How to share huge data structure between threads?

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

Replies are listed 'Best First'.
Re:^2 How to share huge data structure between threads?
by ph0enix (Friar) on Jan 14, 2003 at 11:51 UTC

    Looks interesting, but if $obj goes out of scope created object will be destroyed (reference counter is zero and so variable can be garbage collected) and can't be restored from stored address. This occurs eg. if variable is created in one thread and should be used in other one.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://225824]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others sharing their wisdom with the Monastery: (4)
As of 2024-04-26 00:15 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found