> The normal way of solving this fairness problem is to make pending write > locks block read lock attempts, so that the reader count is guaranteed > to drop to zero as read locks are released. I haven't looked at the > Linux implementation of rwlocks, so I don't know how hard this is to > do. Or perhaps there's some other reason for not implementing it this > way? Actually implementing a fair spinlocks and fair rwlocks on the x86 arch are very easy (at least, if you have XADD it is). Any arch which has CMPXCHG can also do it, just not so easily. I've attached an implementation of a fair spinlock and an implementation of a fair rwlock (which can be compiled and played with in u-space). David