mirror of https://github.com/mkerrisk/man-pages
pthread_rwlockattr_setkind_np.3: New page documenting pthread_rwlockattr_[sg]etkind_np(3)
Documents pthread_rwlockattr_setkind_np(3) and pthread_rwlockattr_getkind_np(3). Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
parent
b6d8894f73
commit
88e15474bf
|
@ -0,0 +1,102 @@
|
|||
.\"Copyright (c) 2010 Novell Inc., written by Robert Schweikert
|
||||
.\" <mtk.manpages@gmail.com>
|
||||
.\"
|
||||
.\" Permission is granted to make and distribute verbatim copies of this
|
||||
.\" manual provided the copyright notice and this permission notice are
|
||||
.\" preserved on all copies.
|
||||
.\"
|
||||
.\" Permission is granted to copy and distribute modified versions of this
|
||||
.\" manual under the conditions for verbatim copying, provided that the
|
||||
.\" entire resulting derived work is distributed under the terms of a
|
||||
.\" permission notice identical to this one.
|
||||
.\"
|
||||
.\" Since the Linux kernel and libraries are constantly changing, this
|
||||
.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
||||
.\" responsibility for errors or omissions, or for damages resulting from
|
||||
.\" the use of the information contained herein. The author(s) may not
|
||||
.\" have taken the same level of care in the production of this manual,
|
||||
.\" which is licensed free of charge, as they might when working
|
||||
.\" professionally.
|
||||
.\"
|
||||
.\" Formatted or processed versions of this manual, if unaccompanied by
|
||||
.\" the source, must acknowledge the copyright and authors of this work.
|
||||
.\"
|
||||
.TH PTHREAD_RWLOCKATTR_SETKIND_NP 3 2010-06-09 "Linux Programmer's Manual"
|
||||
.SH NAME
|
||||
pthread_rwlockattr_setkind_np, pthread_rwlockattr_getkind_np \- set/get
|
||||
the read-write lock kind of the thread read-write lock attribute object
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
.B #define _XOPEN_SOURCE 500
|
||||
.B #include <pthread.h>
|
||||
|
||||
.BI "int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *" attr ,
|
||||
.BI " int" pref);
|
||||
.BI "int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t *" attr ,
|
||||
.BI " int *" pref);
|
||||
.sp
|
||||
Compile and link with \fI\-pthread\fP.
|
||||
.SH DESCRIPTION
|
||||
The
|
||||
.BR pthread_rwlockattr_setkind_np ()
|
||||
function
|
||||
sets the kind of read-write lock of the
|
||||
thread read-write lock attribute object referred to by
|
||||
.I attr
|
||||
to the value specified with
|
||||
.IR pref .
|
||||
The argument
|
||||
.I pref
|
||||
may be set to
|
||||
.IR PTHREAD_RWLOCK_PREFER_READER_NP ,
|
||||
.IR PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP ,
|
||||
or
|
||||
.IR PTHREAD_RWLOCK_PREFER_WRITER_NP .
|
||||
The default lock setting is
|
||||
.IR PTHREAD_RWLOCK_PREFER_READER_NP .
|
||||
A thread may hold multiple read locks, i.e. read locks are recursive.
|
||||
According to The Single Unix Specification, the behavior is unspecified when a
|
||||
reader tries to place a lock, and there is no write lock but writers are
|
||||
waiting. Giving preference to the reader, as is set by default with the
|
||||
.IR PTHREAD_RWLOCK_PREFER_READER_NP value
|
||||
implies that the reader will receive the requested lock, even if
|
||||
a writer is waiting. As long as there are readers the writer will be
|
||||
starved. Setting the kind to
|
||||
.IR PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP ,
|
||||
avoids writer starvation as long as any read locking is not done in a
|
||||
recursive fashion.
|
||||
|
||||
The
|
||||
.BR pthread_rwlockattr_getkind_np ()
|
||||
function
|
||||
returns the value of the read-write lock attribute of the
|
||||
thread read-write lock attribute object referred to by
|
||||
.IR attr
|
||||
in the pointer
|
||||
.IR pref .
|
||||
.SH RETURN VALUE
|
||||
On success, these functions return 0;
|
||||
on error,
|
||||
.BR pthread_rwlockattr_setkind_np ()
|
||||
returns a non-zero error number.
|
||||
.SH ERRORS
|
||||
.TP
|
||||
.BR EINVAL
|
||||
.I pref
|
||||
is set to an unsupported value.
|
||||
.SH BUGS
|
||||
Setting the value read-write lock kind to
|
||||
.IR PTHREAD_RWLOCK_PREFER_WRITER_NP ,
|
||||
results in the same behavior as setting the value to
|
||||
.IR PTHREAD_RWLOCK_PREFER_READER_NP .
|
||||
As long as a reader thread holds the lock the thread holding a
|
||||
write lock will be starved. Setting the kind value to
|
||||
.IR PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP ,
|
||||
allows the writer to run. However, the writer may not be
|
||||
recursive as is implied by the name. See
|
||||
http://sourceware.org/bugzilla/show_bug.cgi?id=7057
|
||||
.SH CONFORMING TO
|
||||
These functions are non-standard GNU extensions;
|
||||
hence the suffix "_np" (non-portable) in the names.
|
||||
.SH SEE ALSO
|
||||
.BR pthreads (7)
|
Loading…
Reference in New Issue