[dmd-internals] Regarding deprecation of volatile statements

Jonathan M Davis jmdavisProg at gmx.com
Mon Jul 23 15:34:06 PDT 2012


On Monday, July 23, 2012 23:28:05 Alex Rønne Petersen wrote:
> Hi,
> 
> I'm a bit confused.
> 
> First of all: From what I understand, volatile is merely a compiler
> reordering fence. It has nothing to do with atomicity, nor
> synchronization. Is this correct?
> 
> Assuming my understanding is correct: Why does DMD suggest using
> synchronized to replace volatile statements? It doesn't even remotely
> do the same thing, is much heavier, calls into the runtime, etc.
> 
> And further: How are people *really* supposed to prevent compiler
> reordering in modern D2 programs (without using atomics; they are
> expensive and wasteful for this)?

If D's volatile is/was anything like C's, it's my understanding the whole 
point of it is to tell the compiler that the object could be accessed by 
multiple threads simultaneously, so it shouldn't do optimizations or 
instruction reordering which screws with that. That being the case,
I thought that shared replaced volatile, not synchronized.

- Jonathan M Davis


More information about the dmd-internals mailing list