Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

Re: Things you need to know before programming Perl ithreads

by Anonymous Monk
on Apr 08, 2004 at 20:15 UTC ( #343737=note: print w/replies, xml ) Need Help??

in reply to Things you need to know before programming Perl ithreads

Well, a COWed approach to shared variables is being considered for Ponie, but that's still at least a year or so in the future. And that doesn't seem to fix the non-shared data copying problem when a thread is started.

I think you meant a COWed approach to non-shared variables, and in fact that should fix the data copying problem.

-- Jamie Lokier

  • Comment on Re: Things you need to know before programming Perl ithreads

Replies are listed 'Best First'.
Re: Re: Things you need to know before programming Perl ithreads
by liz (Monsignor) on Apr 08, 2004 at 21:08 UTC
    Actually, it would have been more correct to remove "shared" in this context. A non-shared variable is cloned when a thread is started. However, a shared variable is also cloned.
    use threads; use threads::shared; my $foo : shared; print "outside thread: foo = ".(\$foo)."\n"; threads->new( sub { print "inside thread: foo = ".(\$foo)."\n" } )->jo +in; __END__ outside thread: foo = SCALAR(0x107cc0) inside thread: foo = SCALAR(0x232800)
    Remember, a shared variable is nothing other than an ordinary tied variable, and cloned as any other variable when a thread is started. Whenever a thread accesses the value of a shared variable, its value is copied from the hidden shared variables thread into the thread local copy, and then presented to the outside world as a "normal" variable. Whenever a thread updates a shared variable, the value is updated in the thread local version, as well as in the hidden shared variables thread.

    All of these copy actions should be COWed, ideally.

    Hope this made sense.


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://343737]
[stevieb]: interestingly enough, someone else got my Devel::Examine:: Subs distribution for their PRC, and I applaud the change. This dist is extremely complicated and mostly obfu, but the person doing it understood PPI enough to change...
[stevieb]: ...something I had overlooked in the extreme depths of the core functionality. After merging, then a couple of extra tweaks, I still have 100% test coverage. Yay for people who write tests!

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (5)
As of 2017-01-24 01:20 GMT
Find Nodes?
    Voting Booth?
    Do you watch meteor showers?

    Results (199 votes). Check out past polls.