safety model in D

Walter Bright newshound1 at digitalmars.com
Tue Nov 3 21:18:47 PST 2009


Jason House wrote:
> How does casting away const, immutable, or shared cause memory
> corruption? If I understand SafeD correctly, that's its only goal. If
> it does more, I'd also argue casting to shared or immutable is, in
> general, unsafe.

They can cause memory corruption because inadvertent "tearing" can occur 
when two parts to a memory reference are updated, half from one and half 
from another alias.

> I'm also unsure if safeD has really fleshed out what
> would make use of (lockfree) shared variables safe. For example,
> array concatenation in one thread while reading in another thread
> could allow reading of garbage memory (e.g. if the length was
> incremented before writing the cell contents)

That kind of out-of-order reading is just what shared is meant to prevent.




More information about the Digitalmars-d mailing list