Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

pthread_rwlockattr_setkind_np(3) [linux man page]

PTHREAD_RWLOCKATTR_SETKIND_NP(3)			     Library Functions Manual				  PTHREAD_RWLOCKATTR_SETKIND_NP(3)

NAME
pthread_rwlockattr_setkind_np, pthread_rwlockattr_getkind_np - set/get the read-write lock kind of the thread read-write lock attribute object SYNOPSIS
#include <pthread.h> int pthread_rwlockattr_setkind_np(pthread_rwlockattr_t *attr, int pref); int pthread_rwlockattr_getkind_np(const pthread_rwlockattr_t *attr, int *pref); Compile and link with -pthread. Feature Test Macro Requirements for glibc (see feature_test_macros(7)): pthread_rwlockattr_setkind_np(), pthread_rwlockattr_getkind_np(): _XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200809L DESCRIPTION
The pthread_rwlockattr_setkind_np() function sets the "lock kind" attribute of the read-write lock attribute object referred to by attr to the value specified in pref. The argument pref may be set to one of the following: PTHREAD_RWLOCK_PREFER_READER_NP This is the default. A thread may hold multiple read locks; that is, read locks are recursive. According to The Single Unix Speci- fication, the behavior is unspecified when a reader tries to place a lock, and there is no write lock but writers are waiting. Giv- ing preference to the reader, as is set by PTHREAD_RWLOCK_PREFER_READER_NP, 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. PTHREAD_RWLOCK_PREFER_WRITER_NP This is intended as the write lock analog of PTHREAD_RWLOCK_PREFER_READER_NP. But see BUGS. PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP Setting the lock kind to this avoids writer starvation as long as any read locking is not done in a recursive fashion. The pthread_rwlockattr_getkind_np() function returns the value of the lock kind attribute of the read-write lock attribute object referred to by attr in the pointer pref. RETURN VALUE
On success, these functions return 0. Given valid pointer arguments, pthread_rwlockattr_getkind_np() always succeeds. On error, pthread_rwlockattr_setkind_np() returns a non-zero error number. ERRORS
EINVAL pref specifies an unsupported value. BUGS
Setting the value read-write lock kind to PTHREAD_RWLOCK_PREFER_WRITER_NP results in the same behavior as setting the value to 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 lock kind to PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP allows writers to run, but, as the name implies a writer may not lock recur- sively. VERSIONS
The pthread_rwlockattr_getkind_np() and pthread_rwlockattr_setkind_np() functions first appeared in glibc 2.1. CONFORMING TO
These functions are non-standard GNU extensions; hence the suffix "_np" (non-portable) in the names. SEE ALSO
pthreads(7) Linux Programmer's Manual 2014-10-15 PTHREAD_RWLOCKATTR_SETKIND_NP(3)

Check Out this Related Man Page

PTHREAD_RWLOCK_RDLOCK(3)				   BSD Library Functions Manual 				  PTHREAD_RWLOCK_RDLOCK(3)

NAME
pthread_rwlock_rdlock, pthread_rwlock_tryrdlock -- acquire a read/write lock for reading SYNOPSIS
#include <pthread.h> int pthread_rwlock_rdlock(pthread_rwlock_t *lock); int pthread_rwlock_tryrdlock(pthread_rwlock_t *lock); DESCRIPTION
The pthread_rwlock_rdlock() function acquires a read lock on lock provided that lock is not presently held for writing and no writer threads are presently blocked on the lock. If the read lock cannot be immediately acquired, the calling thread blocks until it can acquire the lock. The pthread_rwlock_tryrdlock() function performs the same action, but does not block if the lock cannot be immediately obtained (i.e., the lock is held for writing or there are waiting writers). A thread may hold multiple concurrent read locks. If so, pthread_rwlock_unlock() must be called once for each lock obtained. The results of acquiring a read lock while the calling thread holds a write lock are undefined. IMPLEMENTATION NOTES
To prevent writer starvation, writers are favored over readers. RETURN VALUES
If successful, the pthread_rwlock_rdlock() and pthread_rwlock_tryrdlock() functions will return zero. Otherwise an error number will be returned to indicate the error. ERRORS
The pthread_rwlock_tryrdlock() function will fail if: [EBUSY] The lock could not be acquired because a writer holds the lock or was blocked on it. The pthread_rwlock_rdlock() and pthread_rwlock_tryrdlock() functions may fail if: [EAGAIN] The lock could not be acquired because the maximum number of read locks against lock has been exceeded. [EDEADLK] The current thread already owns lock for writing. [EINVAL] The value specified by lock is invalid. [ENOMEM] Insufficient memory exists to initialize the lock (applies to statically initialized locks only). SEE ALSO
pthread_rwlock_init(3), pthread_rwlock_trywrlock(3), pthread_rwlock_unlock(3), pthread_rwlock_wrlock(3) STANDARDS
The pthread_rwlock_rdlock() and pthread_rwlock_tryrdlock() functions are expected to conform to Version 2 of the Single UNIX Specification (``SUSv2''). HISTORY
The pthread_rwlock_rdlock() function first appeared in FreeBSD 3.0. BSD
August 4, 1998 BSD
Man Page