pthread_rwlock_rdlock()¶
Purpose¶
pthread_rwlock_rdlock() acquires a read lock on a POSIX reader-writer lock.
Multiple readers may hold the lock simultaneously, provided no writer currently owns the lock.
This allows concurrent read access to shared data.
Header¶
Prototype¶
Parameters¶
rwlock¶
Pointer to an initialized reader-writer lock.
Example:
Return Value¶
Returns:
on success.
Otherwise returns a POSIX error code.
Common errors:
| Error | Description |
|---|---|
| EDEADLK | Deadlock detected |
| EINVAL | Invalid rwlock object |
Usage Pattern¶
Reader Behavior¶
Multiple readers may enter simultaneously:
All can acquire:
at the same time.
Blocking Behavior¶
Readers block when:
Example:
until the writer releases the lock.
Example¶
Typical Use Cases¶
Configuration Tables¶
Lookup Tables¶
Shared Read-Mostly Data¶
Advantages¶
Concurrent Readers¶
Readers do not block each other.
Simple Programming Model¶
Very similar to mutex usage.
Limitations¶
Reader Locking Overhead¶
Readers still perform synchronization operations.
Every reader acquires and releases a lock.
Writer Starvation¶
Some implementations may allow continuous readers to delay writers.
Fairness policy is implementation-dependent.
Comparison¶
Mutex¶
or
only.
RWLock¶
or
Seqlock¶
Readers avoid locking but may need retries.
RCU¶
Readers avoid locking and focus on object lifetime management.