• Heikki Linnakangas's avatar
    Use a non-locking initial test in TAS_SPIN on x86_64. · b03d196b
    Heikki Linnakangas authored
    Testing done in 2011 by Tom Lane concluded that this is a win on Intel Xeons
    and AMD Opterons, but it was not changed back then, because of an old
    comment in tas() that suggested that it's a huge loss on older Opterons.
    However, didn't have separate TAS() and TAS_SPIN() macros back then, so the
    comment referred to doing a non-locked initial test even on the first
    access, in uncontended case. I don't have access to older Opterons, but I'm
    pretty sure that doing an initial unlocked test is unlikely to be a loss
    while spinning, even though it might be for the first access.
    
    We probably should do the same on 32-bit x86, but I'm afraid of changing it
    without any testing. Hence just add a note to the x86 implementation
    suggesting that we probably should do the same there.
    b03d196b
s_lock.h 26.7 KB