Il 19/06/2013 22:44, Richard Henderson ha scritto:
>>> >> +        /* Data must be read atomically. We don't really need barrier 
>>> >> semantics
>>> >> +         * but it's easier to use atomic_* than roll our own. */
>>> >> +        log = atomic_xchg(from, 0);
>> > 
>> > If you really don't need any ordering guarantees / barriers here, then
>> > using a relaxed load should be fine.  But my gut feeling tells me you
>> > probably do need some barriers; either you are "re-using" another
>> > barrier (and then the comment should probably point out which), or it
>> > must be a case where it's either fine to read any value someone (else)
>> > wrote or there's no concurrent store after all.
>> > 
> There is a store here, before and after.  Read the value, store zero.
> 
> I suppose what the comment is saying is that the atomic operation doesn't need
> to be ordered with respect to the rest of the surrounding code, as the object
> being synchronized is just that one integer.

Exactly.  The items of the array can be read independently.

Paolo

Reply via email to