[dmd-concurrency] shared arrays
    Sean Kelly 
    sean at invisibleduck.org
       
    Thu Jan 14 07:42:23 PST 2010
    
    
  
On Jan 14, 2010, at 7:33 AM, Sean Kelly wrote:
> On Jan 14, 2010, at 7:27 AM, Steve Schveighoffer wrote:
> 
>> You'd need to lock the array data itself.  But in any case, I think it may be too ideal to think we can support atomic array operations without manual synchronization.  I.e., a SynchronizedArray type similar to UniqueArray type may be required for this.
>> 
>> I was thinking more in the case, how to write the runtime so it handles atomic updates of the actual array data, meaning at least word-sized data isn't messed up.  I have no idea if things like this should be possible on shared arrays:
>> 
>> a[] = b[] + 5 + c[];
> 
> I don't know that they can be, sadly.
Regarding my earlier comment, I think I misspoke.  An operation on shared array data could get the base pointer for the block from the GC and use that to obtain a lock.  The compiler could theoretically optimize where locks are acquired for loop operations too, at least in simple cases.  This all smells like a hack though.
    
    
More information about the dmd-concurrency
mailing list