Subject: | implement adaptive rw locks |
Same idea than Linux adaptive mutex: spin a bit when
the lock can't be acquired.
max : 100 rounds
round to try : min(max, cached*2 + 10)
update cached: cached += (count - cached) / 8
use trylock with the standard lock when count reaches
the current max.
Add asm("rep; nop"); for x86_64
If performed well, extend to mutex and replace
the Linux adaptive patch (marked _NP :-).