• R
    sanitize number of spins in userspace before futex wait · b8a9c90e
    Rich Felker 提交于
    the previous spin limit of 10000 was utterly unreasonable.
    empirically, it could consume up to 200000 cycles, whereas a failed
    futex wait (EAGAIN) typically takes 1000 cycles or less, and even a
    true wait/wake round seems much less expensive.
    
    the new counts (100 for general wait, 200 in barrier) were simply
    chosen to be in the range of what's reasonable without having adverse
    effects on casual micro-benchmark tests I have been running. they may
    still be too high, from a standpoint of not wasting cpu cycles, but at
    least they're a lot better than before. rigorous testing across
    different archs and cpu models should be performed at some point to
    determine whether further adjustments should be made.
    b8a9c90e
pthread_barrier_wait.c 2.9 KB