It's worth going through and making sure you understand what the length of your read hold times is. When you have very short hold times, you're actually better served by a mutex as the rwlock_t actually creates more cache contention when hold time are short. See http://queue.acm.org/detail.cfm?id=1454462 for more of the history/explanation of this.