On Tue, Dec 23, 2003 at 11:07:53AM +0100, Elizabeth Mattijsen wrote:
> At 10:37 +0100 12/23/03, Leopold Toetsch wrote:
> >2) the Perl5ish declaration
> >
> >     my $var : shared;
> >
> >   is basically:
> >
> >     $P0 = new SharedPerlUndef;
> >
> >   OTOH:
> >
> >     share($var);
> >
> >   may need to morph $var into a shared reference, with an additional
> >   indirection and memory overhead.
> >
> >(I don't know, what Perl5 does with an already used "$var", that is
> >turned into a shared var later - or even at runtime).
> 
> $ perl5.8.2-threaded -Mthreads -Mthreads::shared -MO=Deparse -e 'my 
> $a : shared = 1'
> use attributes ();
> ('attributes'->import('main', \$a, 'shared'), my $a) = 1;
> 
> $ perl5.8.2-threaded -Mthreads -Mthreads::shared=share -MO=Deparse -e 
> 'my $a = 1; share( $a )'
> my $a = 1;
> share $a;
> 
> 
> Both the share() function as well as the ":shared" attribute, operate 
> at runtime in Perl5.  This is especially awkward for the ":shared" 
> attribute.

Sharing of lexical vars has to be done at run-time, since each time the
scope is entered, you need to create a new instance of the variable.

-- 
"Do not dabble in paradox, Edward, it puts you in danger of fortuitous
wit." -- Lady Croom - Arcadia

Reply via email to