pthread_rwlock_unlock()¶
Purpose¶
pthread_rwlock_unlock() releases a previously acquired reader or writer lock.
The function is used to leave a reader-writer critical section and allow other waiting readers or writers to proceed.
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 |
|---|---|
| EINVAL | Invalid rwlock object |
| EPERM | Current thread does not own the lock |
Usage Pattern¶
Reader¶
Writer¶
Reader Release¶
Conceptually:
The reader count maintained by the implementation is decremented.
When the last reader exits:
waiting writers may proceed.
Writer Release¶
Conceptually:
Exclusive ownership is released.
Waiting readers or writers may acquire the lock.
Example¶
Reader:
Writer:
Synchronization Flow¶
Reader Side¶
Writer Side¶
Common Mistake¶
Incorrect:
The lock is never released.
Correct:
Common Mistake¶
Incorrect:
Shared data is modified after the lock has been released.
Correct:
Relationship to Fairness¶
Releasing a lock may wake:
or:
depending on the implementation's fairness policy.
Examples:
Different implementations may choose different wake-up behavior.
Comparison¶
Mutex¶
Releases exclusive ownership.
RWLock¶
Releases either:
or:
depending on how the lock was acquired.