On Nov 1, 2010, at 10:49 AM, David Simcha wrote: > > > On Mon, Nov 1, 2010 at 1:39 PM, Michel Fortin <[email protected]> > wrote: > > Is "i++" really atomic when i is a size_t? I though it was a > read-modify-write operation. The read might be atomic, the write might be > atomic, but the whole isn't. And in addition to atomicity, it needs to be > sequentially consistent unless we change the GC to keep threads frozen while > calling the destructors. > > > In theory it could be read-modify-write because you never know if some > incredibly stupid compiler will do something like: > > mov EAX, [someAddress]; > inc EAX; > mov [someAddress], EAX; > > instead of just: > > inc [someAddress]; > > However, I'm pretty sure the second form is atomic, and even if it's not > formally guaranteed, any reasonable compiler would use the single inc > instruction form.
The second form is only atomic when preceded by a LOCK modifier. It's still done in the CPU as a RMW operation. _______________________________________________ phobos mailing list [email protected] http://lists.puremagic.com/mailman/listinfo/phobos
