On 02/11/2010 04:35 AM, Per Jessen wrote:
What's the difference between pthread_rwlock_wrlock and pthread_mutex_lock? I understand the difference if we take pthread_rwlock_rdlock into account, but is there any difference between using purely pthread_rwlock_wrlock() vs. pthread_mutex_lock() ?
Let me try to answer this since I've implemented this type of thing before. The pthread_mutex_lock is a general purpose lock object. The locking thread causes all other threads that use that mutex to block. Very simple. The pthread_rwlock_wrlock() and its sibling pthread_rwlock_rdlock() implement a reader-writer strategy there are many readers and a few writers. The basic issue is that you want to allow reader threads to proceed, but you want to block writers. If a writer thread calls pthread_rwlock_wrlock(), it will block if a reader thread has called the rdlock, but it will also block subsequent readers. So basically, in your question, if you only use wrlock() then the effect is the same as the standard mutex lock, but it appears there is more overhead associated with it. -- Jerry Feldman <gaf@blu.org> Boston Linux and Unix PGP key id: 537C5846 PGP Key fingerprint: 3D1B 8377 A3C0 A5F2 ECBB CA3B 4607 4319 537C 5846