Yea, I tried it out, and I stand corrected.  <br><br><div class="gmail_quote">On Tue, Nov 2, 2010 at 10:20 AM, Sean Kelly <span dir="ltr"><<a href="mailto:sean@invisibleduck.org">sean@invisibleduck.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div><div></div><div class="h5">On Nov 1, 2010, at 10:49 AM, David Simcha wrote:<br>
<br>
><br>
><br>
> On Mon, Nov 1, 2010 at 1:39 PM, Michel Fortin <<a href="mailto:michel.fortin@michelf.com">michel.fortin@michelf.com</a>> wrote:<br>
><br>
> 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.<br>

><br>
><br>
> In theory it could be read-modify-write because you never know if some incredibly stupid compiler will do something like:<br>
><br>
> mov EAX, [someAddress];<br>
> inc EAX;<br>
> mov [someAddress], EAX;<br>
><br>
> instead of just:<br>
><br>
> inc [someAddress];<br>
><br>
> 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.<br>
<br>
</div></div>The second form is only atomic when preceded by a LOCK modifier.  It's still done in the CPU as a RMW operation.<br>
<div><div></div><div class="h5"><br>
_______________________________________________<br>
phobos mailing list<br>
<a href="mailto:phobos@puremagic.com">phobos@puremagic.com</a><br>
<a href="http://lists.puremagic.com/mailman/listinfo/phobos" target="_blank">http://lists.puremagic.com/mailman/listinfo/phobos</a><br>
</div></div></blockquote></div><br>