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
_______________________________________________
dmd-internals mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-internals

Reply via email to