in reply to Re: Things you need to know before programming Perl ithreads
in thread Things you need to know before programming Perl ithreads
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.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)
All of these copy actions should be COWed, ideally.
Hope this made sense.
Liz
|
---|