On Friday 19 November 2010 20:03:27 Andres Freund wrote: > Which means something like (in intel's terminology) can happen: > > initially x = 0 > > P1: mov [_X], 1 > P1: lock xchg Y, 1 > > P2. lock xchg [_Z], 1 > P2: mov r1, [_X] > > A valid result is that r1 on P2 is 0. > > I think that is not biting pg because it always uses the same spinlocks at > the reading and writing side - but I am not that sure about that. Which also seems to mean that a simple read memory barrier that does __asm__ __volatile__("lock; xaddl $0, ???") seems not to be enough unless you use the same address for all those barriers which would cause horrible cacheline bouncing.
Am I missing something? Andres -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers