rw_unlock(SYNCH)
rw_unlock --
release a reader-writer lock
Synopsis
cc [options] -Kthread file
#include <synch.h>
int rw_unlock(rwlock_t *lock);
Description
rw_unlock releases a reader-writer lock
previously acquired by rw_rdlock, rw_wrlock,
rw_tryrdlock, or rw_trywrlock.
The behavior differs according to whether the caller
is a reader or a writer:
-
When a writer calls rw_unlock,
the lock is unlocked.
-
When a reader calls rw_unlock,
the reader count is decremented.
If the reader count is zero,
rw_unlock unlocks the lock,
otherwise,
the lock is not unlocked.
When rw_unlock unlocks the lock,
the first waiter (reader or writer) is activated.
-
If the thread activated is a reader,
all subsequent readers are activated
(up to the next writer or end of queue)
and the count of readers holding the lock is changed to reflect this.
-
If the thread activated is a writer,
no other threads are activated
and the lock is marked as being held by a writer.
lock must previously have been initialized
(see rwlock_init(SYNCH)).
Parameters
lock-
pointer to the lock to be released
Return values
rw_unlock returns zero for success
and an error number for failure.
Errors
If any the following conditions is detected,
rw_unlock fails and returns the corresponding value:
EINVAL-
invalid argument specified
ENOLCK-
lock not locked
References
Intro(SYNCH),
rwlock(SYNCH),
rwlock_destroy(SYNCH),
rwlock_init(SYNCH),
rw_rdlock(SYNCH),
rw_tryrdlock(SYNCH),
rw_trywrlock(SYNCH),
rw_wrlock(SYNCH)
© 2005 The SCO Group, Inc. All rights reserved.
SCO OpenServer Release 6.0.0 - 01 June 2005