Yea, I tried it out, and I stand corrected. On Tue, Nov 2, 2010 at 10:20 AM, Sean Kelly <[email protected]> wrote:
> 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 >
_______________________________________________ phobos mailing list [email protected] http://lists.puremagic.com/mailman/listinfo/phobos
