Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses

Re: threads::shared variables not really shared... or are they?

by renodino (Curate)
on Mar 06, 2008 at 23:51 UTC ( #672632=note: print w/replies, xml ) Need Help??

in reply to threads::shared variables not really shared... or are they?

Shared scalars, arrays, and hashes are indeed shared, but via tied proxy mechanism. The actual data resides in a shared Perl interpretter context; the usual tie() operations then route all reads/writes (and various metadata operations) to execute against the shared interpretter's version of the variables. Note that, for scalars, the shared value does get copied into the private proxy on read().

I can't say precisely why your example doesn't grow significantly, except that the array tie() operations won't populate the private proxy copy in each thread, instead routing directly to the shared interpretter's version of the array. So in your example, the private @a never grows, only the shared version.

Note that if you were vivifying individual shared scalars, you likely would see some significant memory growth, since there would be a copy in both the originating thread, and in the shared interpretter.

Also note that the shared interpretter is one of the major bottlenecks in ithreads: as you might imagine, a Perl interpretter context holds a lot of state, thus concurrent access requires a major lock on the whole thing...which unfortunately can create a lot of thread contention.

Perl Contrarian & SQL fanboy
  • Comment on Re: threads::shared variables not really shared... or are they?

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://672632]
[ambrus]: Some of them are rather embarrassing historical misfeatures. One I partly worked around right now as I told him.
[holli]: `?
[choroba]: yes
[holli]: yes, that's a great one. it's one the yapc::na channel for quite a while now
[holli]: 'on
[choroba]: there was a slightly improved version in Amterdam
[choroba]: s/mte/mste/
[holli]: meh, i never get used to this keyboard
[holli]: i didnt pay attention when i bought it. it's one of those where backspace is just one unit wide
[holli]: in what way improved?

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (10)
As of 2017-11-21 13:46 GMT
Find Nodes?
    Voting Booth?
    In order to be able to say "I know Perl", you must have:

    Results (302 votes). Check out past polls.