• Robert Haas's avatar
    Improve spinlock performance for HP-UX, ia64, non-gcc. · c01c25fb
    Robert Haas authored
    At least on this architecture, it's very important to spin on a
    non-atomic instruction and only retry the atomic once it appears
    that it will succeed.  To fix this, split TAS() into two macros:
    TAS(), for trying to grab the lock the first time, and TAS_SPIN(),
    for spinning until we get it.  TAS_SPIN() defaults to same as TAS(),
    but we can override it when we know there's a better way.
    
    It's likely that some of the other cases in s_lock.h require
    similar treatment, but this is the only one we've got conclusive
    evidence for at present.
    c01c25fb
s_lock.h 22.7 KB