Non-atomic ops allowed on shared variables?

Jonathan M Davis jmdavisProg at gmx.com
Sat Dec 3 12:03:16 PST 2011


On Saturday, December 03, 2011 20:54:38 Andrej Mitrovic wrote:
> On 12/3/11, Jonathan M Davis <jmdavisProg at gmx.com> wrote:
> > Where in TDPL does it say this?
> 
> Page 413.
> 
> > Requiring that all operations on a shared
> > object be atomic would be highly restrictive.
> 
> Yeah sorry, my title was wrong, of course you could use
> synchronization instead of atomics. But shared does need to have
> guarantees, it should be as useful as, say, const (when it works).

That page says that reads and writes are guaranteed to be atomic for shared. 
It does _not_ say that something like ++threadsCount is guaranteed to be 
atomic. That's a read _and_ a write. You have to do something yourself to 
guarantee that it's treated as atomic across threads (via sychronized blocks, 
or mutexes, or whatever).

- Jonathan M Davis


More information about the Digitalmars-d-learn mailing list