valid uses of shared

Christophe Travert travert at phare.normalesup.org
Mon Jun 18 05:48:00 PDT 2012


"Steven Schveighoffer" , dans le message (digitalmars.D:169568), a
 écrit :
> On Thu, 07 Jun 2012 22:16:21 -0400, Robert DaSilva <spunit262 at yahoo.com>  
> wrote:
> 
> 
>> You're forgetting about Global data.
> 
> I wasn't so much forgetting it as I was ignoring it :)
> 
> My thought on that is that the shared keyword in that case is truly a  
> storage class.  It's the one place where having a value-type based shared  
> value makes sense.  If we had some kind of synchronized/shared pairing,  
> the compiler would have to allocate mutex space for that too.
> 
>> I think rather the head shared should be striped as this fits better  
>> with how D treats meaningless specifiers.
> 
> I don't think we can do that with type constructors, but I'm not sure.   
> I'm certainly against it, as I am against the current abuses of that  
> methodology.
> 
>> And trying to put structs that contain shared data on the stack should  
>> be illegal.

The compiler can already heap-allocate function variables that should be 
on the stack. So why disallowing shared for function variables?

void foo()
{
  shared int test; // allocates test on shared memory block.
}

Just like:
int delegate(int) adder(int a)
{
  return b => (a+b); // allocates a on the heap to make a closure.
}

-- 
Christophe


More information about the Digitalmars-d mailing list