in reply to threads::shared variables not really shared... or are they?
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.
|
---|