Non-atomic ops allowed on shared variables?
Jonathan M Davis
jmdavisProg at gmx.com
Sat Dec 3 11:19:45 PST 2011
On Saturday, December 03, 2011 18:32:15 Andrej Mitrovic wrote:
> I thought this wasn't allowed:
>
> shared uint threadsCount;
>
> void bumpThreadsCount()
> {
> ++threadsCount;
> }
>
> void main()
> {
> }
>
> According to TDPL it should error and we should use atomicOp from
> std.concurrency instead. atomicOp is what I've used so far if I had to
> use shared variables. Has ++ suddenly become atomic automatically or
> is this a bug?
Where in TDPL does it say this? Requiring that all operations on a shared
object be atomic would be highly restrictive. Sure, if you use anything other
than an atomic operation on a shared object and don't use a synchronized block
or a mutex or the like, you risk race conditions, but if every operation on a
shared object had to actually be atomic, you couldn't do much of anything to
them.
- Jonathan M Davis
More information about the Digitalmars-d-learn
mailing list